Eliminar un metabox registrado por otro complemento - Woocommerce [cerrado]

2

Estoy intentando eliminar el metabox de la galería que se agrega por WooCommerce; se agregó en una actualización, pero ya tengo un metabox de la galería y no quiero confundir al cliente.

Obviamente puedo hackear el plugin, pero me gustaría hacerlo desde functions.php

Lo he intentado:

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

No parece funcionar

El código que lo está agregando parece ser

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

y

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

He eliminado secciones que no son relevantes, es decir, otros metaboxes registrados, etc.

    
pregunta JorgeLuisBorges 19.02.2014 - 20:15

2 respuestas

9

Una búsqueda rápida en su GitHub repo muestra la siguiente línea:

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

Por lo tanto, su llamada a remove_meta_box() utiliza el id / handle / name correcto, así como la prioridad y el contexto correctos.

El problema es el enlace y la prioridad con la que se ejecuta el enlace. Debe cancelar el registro más adelante que el complemento WooCommerce Registra las cajas . De lo contrario, intenta cancelar el registro de algo que aún no 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');
}
    
respondido por el kaiser 19.02.2014 - 21:02
3

Debería ser posible eliminar ese metabox pero tendrás que eliminarlo después de que se haya agregado. Creo que estás intentando hacerlo con el argumento de prioridad, pero también estás usando un enlace diferente y uno que, si es un servidor de memoria, se ejecuta antes de que el complemento use el enlace.

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

Lea otras preguntas en las etiquetas