Удалите метабокс, зарегистрированный другим плагином - Woocommerce [закрыт]


Я пытаюсь удалить метабокс галереи который добавлен WooCommerce - он был добавлен в обновлении, но у меня уже есть метабокс галереи, и я не хочу запутывать клиента.

Очевидно, что я могу взломать плагин, но я хотел бы сделать это из functions.php

Я пробовал:

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

Похоже, это не работает

Код, который добавляет его, кажется,

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

И

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

Я удалил разделы, которые не имеют отношения к делу, т.Е. зарегистрированные другие метабоксы и т. Д.

 2
Author: JorgeLuisBorges, 2014-02-19

2 answers

Быстрый поиск в их репозитории на GitHub показывает следующую строку:

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

Итак, ваш призыв к remove_meta_box() использует правильный идентификатор/дескриптор/имя, а также правильный приоритет и контекст.

Проблема только в крючке и приоритете, с которым выполняется крючок - вам нужно отменить регистрацию позже, чем плагин WooCommerce регистрирует поля . В противном случае вы пытаетесь отменить регистрацию чего-то, что еще не зарегистрировано.

add_action( 'add_meta_boxes' , 'remove_my_meta_boxes', 40 );
function remove_my_meta_boxes()
{
    remove_meta_box( 'woocommerce-product-images',  'product', 'side');
}
 9
Author: kaiser, 2014-02-19 20:17:24

Должно быть возможно удалить этот метабокс, но вам придется удалить его после того, как он будет добавлен. Я думаю, что вы пытаетесь сделать это с аргументом приоритета, но вы также используете другой хук, который, если сервер памяти, запускается до того, как хук используется плагином.

function remove_my_meta_boxes() {
    remove_meta_box( 'woocommerce-product-images',  'product', 'side');
}
add_action( 'add_meta_boxes' , 'remove_my_meta_boxes', 40 );
 3
Author: s_ha_dum, 2014-02-19 20:02:42