Woocommerce remove action не работает

remove_action() WP 1.2.0

Удаляет хук (событие или фильтр). Удаляет функцию прикрепленную к указанному хуку.

Удалять хук нужно после того, как он был добавлен. А значит: если вы удаляете хук, а он не удаляется, то скорее всего вы удаляете его до того как он добавляется в коде.

В этом случае удалить хук можно повесив удаление на другой, более поздний хук например wp_loaded :

ВАЖНО: При удалении хука, приоритет (параметр $priority ) должен совпадать с указанным при создании хука. При несовпадении, вы не увидите никаких предупреждений об этом — функция просто вернет false .

Возвращает

true|false . true — хук был удален. false — хук не был удален.

Использование

Примеры

#1. Пример отключения хука-события:

Отключим действие wpautop у хука the_content :

точно также его можно отключить через remove_filter() — это идентичная функция:

#2 Пример удаления хука-события для PHP класса

Если событие было добавлено из класса (например, плагин добавил какое-то событие), то чтобы его удалить вам нужно знать конкретный экземпляр класса, который добавил хук. Часто эти экземпляры классов хранятся в глобальных переменных.

Пример удаления хука вызванного из класса, который был записан в глобальную переменную $my_class :

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

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

#3 Удаление хука со статическим методом класса

Допустим хук был добавлен таким кодом:

Чтобы удалить этот хук нужно: во-первых вызвать функцию удаление позже и во-вторых правильно передать название метода:

#4 Другие примеры

Еще примеры смотрите в описании функции: remove_filter().

Список изменений

Код remove_action() remove action WP 5.8.1

Cвязанные функции

События (хуки)

Хуки: события, фильтры

Друзья, расскажите побольше про удаления хука-события для PHP класса. Вот хочу убрать со страницы редактирования пользователя в админке мета-поля, добавленные плагином Yoast SEO. Вот часть кода его:

Тут нет альтернатив вроде бы: нужно найти нужный экземпляр класса и удалить через него.

Т.е. тебе надо найти где создается класс:

Обычно переменная $foo глобальная и к ней есть доступ отовсюду. Используя её можно удалить хук. Например:

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

П.С. про порядок выполнения операций не забывай: не вызови удаление до того как хук добавлен — не удалиться ничего, даже если код правильный.

https://github.com/herewithme/wp-filters-extras/ вот два метода-лома. Удалить можно, но риски есть всё равно. Однако в таких случаях альтернатив мало.

Читайте также:  Как настроить передний переключатель altus

Спасибо за ссылку, может быть очень полезна!

Вот работающий пример(может кому пригодиться):

При удалении хука, приоритет (параметр $priority) должен совпадать с указанным при создании хука.

Здравствуйте, пожалуйста скажите как очистить ненужные коды WordPress на WordPress 5.4 или как использовать remove_action на WordPress 5.4

Подскажите. Как удалить действие? В плагине оно прописано как:

В functions.php добавил

Но что-то не работает.

Только вместо __CLASS__ надо подставить название класса (если метод статический).

Лучшие сказать, откуда этот хук, быстрое гугление результатов не дало.

Помогите. Делал по мануалам, без знаний PHP.

Есть тема TwentyTwenty. Работаю над дочерней. Необходимо внести изменения в функцию twentytwenty_get_post_meta файла /inc/template-tags.php . Понимаю, что файлы из директории inc дочерней темы, просто так не изменить.

Поэтому, в functions.php дочерней темы, пытаюсь сначала ограничить работу родительской функции:

Далее — копирую и вставляю после приведённого кода функцию, назвав её по-новому: new_remove_twentytwenty_get_post_meta . Немного редактирую косметику, проверяю на фронтэнде.

Однако, изменений не происходит. То есть, родительская функция даже не удаляется по всей видимости. Подскажите решение.

Источник

WordPress Remove_action проблемы

Чтобы предварить это, я хорошо знаю, что есть несколько вопросов по SO, которые охватывают эту проблему. Однако, пройдя через многие из них и попробовав их решения, я все еще не смог удалить действие. Некоторые из SO вопросов, которые я пробовал:

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

Вызов add_action, который я пытаюсь удалить:

Эта add_action вызывается в классе WOO_SL_front , который определяет $this->functions = new WOO_SL_functions();

В моей попытке удалить это действие я использовал следующую функцию:

С этой попыткой я не смог удалить действие. Функция все еще выполняется. Как видите, я печатаю список зарегистрированных действий WordPress в error_log. Благодаря этому я знаю, что действие было добавлено до того, как я пытался удалить его, и я считаю, что подтвердил, что в функции remove_action указан правильный класс. Соответствующий вывод здесь:

Из этого вывода я не уверен, что делать из 000000005807010900000000491e34d0woocommerce_order_item_meta_end , Это ясно показывает класс, из которого эта функция WOO_SL_functions и имя функции woocommerce_order_item_meta_end , Тем не менее, я перепробовал все возможные варианты вызова функции remove_action:

Любое понимание, которое каждый может предоставить, высоко ценится!

Источник

Remove action fails to remove default WooCommerce hooked function

I am trying to move the product tabs from woocommerce_after_single_product_summary to woocommerce_before_single_product_summary. Essentially, I want to replace the image of the product on the single product with a tab that has the image gallery, but all the other tabs show up in that same container. I have issues trying to get the container around the tabs to act like the container around the image, but what’s got me stumped is how to remove the tabs from the woocommerce_after_single_product_summary section. I can remove «related products» no problem, from the same section, but nothing I’ve done has budged the tabs.

Читайте также:  При перезагрузке ноутбука не работает wifi

This works fine to remove the image:

This works fine to add the tabs in its place (Other than the container issue):

But this never seems to get rid of the tabs:

I’ve checked that 10 is the correct number (which I found does make a difference) but it IS correct. I traced the add_action to woocommerce/includes/wc-template-hooks.php:

I can remove related products with: remove_action( ‘woocommerce_after_single_product_summary’, ‘woocommerce_output_related_products’, 20 );

I’ve tried the suggestion (in another topic) that the hook might need a «template redirect» but that didn’t work either. What I tried was:

Any ideas? I’ve searched all the possibly relevant plugins, turned a bunch off, and still the same behavior. I can put the tabs anywhere I want, but I can’t get rid of them.

Источник

Woocommerce-remove_action не работает

Я пытаюсь изменить функцию для wc_create_new_customer в Woocommerce, я добавил ее в свой файл functions.php.

Это, очевидно, дает мне ошибку, так как wc_create_new_customer уже был удален. Как я могу изменить это, чтобы работать?

2 ответа

Я пытаюсь использовать remove_action, чтобы предотвратить запуск части плагина — не спрашивайте меня почему : -). Функцию в плагин: add_action( ‘woocommerce_before_single_product_summary’, array( $this, ‘show_product_gallery’ ), 30 ); и я пытаюсь удалить его с помощью: remove_action(.

Я добавил следующий код в нижнюю часть моего файла functions.php, и они не удаляют функции со страницы моего продукта. Я скопировал номера приоритетов прямо со страницы content-single-product.php, и все равно не повезло! remove_action(‘woocommerce_single_product_summary’.

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

Однако «fix» выше не годится, так как он не принимает новую функцию.

Измените имя вашего настраиваемого wc_create_new_customer (на my_wc_create_new_customer или аналогичное) и используйте его при вызове add_action .

Вместо того, чтобы изменять основную функцию, вы хотите использовать действие, чтобы заставить пользовательскую функцию запускаться в определенное время, когда происходит определенное событие. Событие woocommerce_created_customer запускается WooCommerce при создании нового клиента, поэтому вы можете подключиться к этому действию, чтобы запустить свой код:

Похожие вопросы:

Я пытаюсь изменить плагин фильтра продукта WooCommerce, чтобы добавить фильтр как

Я новичок в написании плагинов WordPress. Я пытаюсь написать небольшой плагин, который изменяет то, как плагин woocommerce отображает изображения на одной странице продукта. В частности, если.

Я пытаюсь отображать продукты на своей домашней странице (home.php), а не на статической первой странице, используя шорткод woocommerce и подключая его к functions.php. Вот шорткод в home.php .

Я пытаюсь использовать remove_action, чтобы предотвратить запуск части плагина — не спрашивайте меня почему : -). Функцию в плагин: add_action( ‘woocommerce_before_single_product_summary’, array(.

Я добавил следующий код в нижнюю часть моего файла functions.php, и они не удаляют функции со страницы моего продукта. Я скопировал номера приоритетов прямо со страницы content-single-product.php, и.

Ранее я использовал решение, описанное здесь: remove_action из класса PHP для удаления действия в плагине членства WooCommerce. Однако это решение больше не работает, так как WooComemerce изменили.

Источник

remove_action() не работает в плагине WordPress

Я новичок в написании плагинов WordPress. Я пытаюсь написать небольшой плагин, который изменяет то, как плагин woocommerce отображает изображения на одной странице продукта. В частности, если изображения продукта нет, сделайте div, содержащий изображение «display:none», а не отображающий там изображение-заполнитель. Стратегия, которую я использую, состоит в том, чтобы использовать add_action для рендеринга моей собственной версии шаблона woocommerce product_image.php, а затем (пытаясь) использовать remove_action для предотвращения рендеринга исходного файла product_image.php. Add_action явно работает, так как я вижу div «display:none» в Firebug. Однако remove_action не удается.

Читайте также:  Сузуки сх4 как настроить время

Приоритет исходного add_action для крючка woocommerce_before_single_product_summary был равен 20, поэтому я сделал приоритет remove_action 30.

Два оператора отладки в конце показывают, что add_action возвращает «1», но результат remove_action пуст. Любая помощь будет очень признательна.

2 ответа

Я уже использовал функцию remove_action в WordPress раньше, чтобы удалить мусор из введенного wp_head, но кажется, что с версией 3.0 некоторые теги не удаляются, как показано ниже: remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 ); Это должно удалить тег prev link, но это не так.

Изучение php, рисунок, а также следующие учебники делают некоторые практические полезные вещи-это импорт. Итак, плагин wordpress. Попытка удалить поле избранные действия, которое вы получаете в заголовке wordpress admin.

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

Это избавляет меня от фактического жесткого кодирования приоритета, который может отличаться для разных сред.

Попробуйте удалить действие во время plugins_loaded, это должно гарантировать, что оно определенно было добавлено, прежде чем вы попытаетесь удалить его.

Похожие вопросы:

функция is_user_logged_in() не работает в плагине WordPress. Показывает следующую ошибку: Фатальная ошибка: Вызов неопределенной функции is_user_logged_in() в Как я могу использовать логику в.

Я использую тему Unite в WordPress с дочерней темой, которую я создал. При попытке удалить действие ошибка php указывает на то, что файл functions.php из дочерней темы загружается перед родительским.

Мне нужно сделать это для темы: remove_action( ‘wp_head’, ‘rel_canonical’ ); Но мне нужно сделать это с условными тегами. Приведенный ниже код не работает. if(is_page(‘comment’)) < remove_action(.

Я уже использовал функцию remove_action в WordPress раньше, чтобы удалить мусор из введенного wp_head, но кажется, что с версией 3.0 некоторые теги не удаляются, как показано ниже: remove_action(.

Изучение php, рисунок, а также следующие учебники делают некоторые практические полезные вещи-это импорт. Итак, плагин wordpress. Попытка удалить поле избранные действия, которое вы получаете в.

Я пытаюсь использовать remove_action, чтобы предотвратить запуск части плагина — не спрашивайте меня почему : -). Функцию в плагин: add_action( ‘woocommerce_before_single_product_summary’, array(.

Я добавил следующий код в нижнюю часть моего файла functions.php, и они не удаляют функции со страницы моего продукта. Я скопировал номера приоритетов прямо со страницы content-single-product.php, и.

Я пытаюсь переопределить класс плагина в плагине WordPress. Вот оригинальный класс плагина : class WCV_Vendor_Dashboard < /** * __construct() */ function __construct() < add_shortcode(.

Я пытаюсь удалить действие, добавленное плагином Woocommerce Memberships. Трассировка действий содержит функции, которые изначально добавляются к крючку под class WC_Memberships_Frontend < public.

Источник

Оцените статью