Remover um metabox registrado por outro plugin - Woocommerce [closed]

2

Estou tentando remover o metabox da galeria que é adicionado pelo WooCommerce - ele foi adicionado em uma atualização, mas eu já tenho um metabox do Gallery e não quero confundir o cliente.

Obviamente eu posso hackar o plugin, mas eu gostaria de fazer isso a partir do functions.php

Eu tentei:

function remove_my_meta_boxes() {
    remove_meta_box( 'woocommerce-product-images',  'product', 'side');
}
add_action( 'admin_menu' , 'remove_my_meta_boxes', 40 );

Parece que não funciona

O código que está adicionando parece ser

public function __construct() {
add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 30 );
}

e

public function add_meta_boxes() {
    add_meta_box( 'woocommerce-product-images', __( 'Product Gallery', 'woocommerce' ), 'WC_Meta_Box_Product_Images::output', 'product', 'side' );
}

Eu removi seções que não são relevantes - ou seja, outros metaboxes registrados, etc.

    
por JorgeLuisBorges 19.02.2014 / 20:15

2 respostas

9

Uma pesquisa rápida em seus Reit do GitHub mostra a seguinte linha:

add_meta_box(
    'woocommerce-product-images',
    __( 'Product Gallery', 'woocommerce' ),
    'WC_Meta_Box_Product_Images::output',
    'product',
    'side'
);

Portanto, sua chamada para remove_meta_box() usa o id / handle / name correto, bem como a prioridade e o contexto corretos.

O problema é apenas o gancho e a prioridade na qual o gancho é executado - você precisa cancelar o registro mais tarde do que o plugin WooCommerce registra as caixas . Senão você tenta cancelar o registro de algo que ainda não está registrado.

add_action( 'add_meta_boxes' , 'remove_my_meta_boxes', 40 );
function remove_my_meta_boxes()
{
    remove_meta_box( 'woocommerce-product-images',  'product', 'side');
}
    
por kaiser 19.02.2014 / 21:02
3

Deve ser possível remover esse metabox, mas você terá que removê-lo depois que ele for adicionado. Eu acho que você está tentando fazer isso com o argumento de prioridade, mas você também está usando um hook diferente e um que, se for um servidor de memória, é executado antes do hook ser usado pelo plugin.

function remove_my_meta_boxes() {
    remove_meta_box( 'woocommerce-product-images',  'product', 'side');
}
add_action( 'add_meta_boxes' , 'remove_my_meta_boxes', 40 );
    
por s_ha_dum 19.02.2014 / 21:02

Tags