Intereting Posts
Я хотел бы удалить URL и описание из заголовка WordPress CSS head info – содержимое, расширения? Javascript DOM-манипуляция с изменением базы данных, сохраняет старый DOM при обновлении. В чем может быть проблема? Ошибка 101 после обновления WordPress Как одна строка в блоге удаляет мой сервер? Комментарий должен видеть только свои комментарии в wordpress Измените цикл, но сохраните исходный запрос, что я делаю неправильно? Получить URL-адрес страницы в блоге Параметры Пользовательская таксономия wp_set_post_terms не работает Как обернуть метазначения, разделенные запятой в <span>? добавить столбец имен файлов в медиабиблиотеку для сортировки по Переход от разработки при выводе производственной базы без перезаписи, в производство Как заказывать теги по тегам? Обработка AJAX с пользовательскими полями пользовательской таксономии при добавлении функция paginate в архиве для персонализированного пост-типа

Удалить действие внутри класса в родительской теме из дочерней темы

Я хочу добавить код к моей дочерней теме, чтобы удалить набор действий в родительской теме.

Действие:

add_action( 'woocommerce_product_options_inventory_product_data', array( 'Electro_WC_Helper', 'product_options_inventory_product_data' ) );

Он находится в классе «Electro_WC_Helper».

Я пытался:

 remove_action( 'woocommerce_product_options_inventory_product_data', array( 'Electro_WC_Helper', 'product_options_inventory_product_data' ), 99 ); 

Что не сработало, поэтому я подумал, что это, вероятно, потому, что дочерние функции запускаются перед родителем, поэтому я добавил следующее:

 add_action( 'admin_head', 'test_function', 99 ); function test_function() { echo 'test543'; remove_action( 'woocommerce_product_options_inventory_product_data', array( Electro_WC_Helper, 'product_options_inventory_product_data' ), 99 ); } 

Что тоже не работает.

Как удалить действие?

Чтобы удалить действие или фильтр, имя функции / метода и приоритет должны совпадать с ранее добавленным действием / фильтром. Действие, которое вы хотите удалить, добавляется с приоритетом 10 (значение по умолчанию), в то время как вы пытаетесь удалить действие с приоритетом 99 .

Попробуй это:

 remove_action( 'woocommerce_product_options_inventory_product_data', array( 'Electro_WC_Helper', 'product_options_inventory_product_data' ) ); // It is the same that: // remove_action( 'woocommerce_product_options_inventory_product_data', array( 'Electro_WC_Helper', 'product_options_inventory_product_data' ), 10 ); 

Кроме того, файл functions.php из дочерней темы загружается перед файлом functions.php из родительской темы, поэтому выполнение функции remove_action() в дочерней теме должно быть отложено с помощью какого-либо действия, потому что оно должно подождать, пока родительский тема добавляет действие, которое мы хотим удалить. admin_head – это действие, которое происходит только на стороне администратора и не связано с темами withe, поэтому оно не запускается во внешнем интерфейсе. Вы должны использовать правильное действие, которое зависит от того, как именно родительская тема добавляет событие действия; Типично вам следует использовать after_setup_theme с высоким приоритетом:

 add_action( 'after_setup_theme', 'cyb_remove_parent_theme_action', 0 ); function cyb_remove_parent_theme_action() { remove_action( 'woocommerce_product_options_inventory_product_data', array( 'Electro_WC_Helper', 'product_options_inventory_product_data' ) ); }