remove_action()
Видаляє хук (подія або фільтр). Видаляє функцію, прикріплену до зазначеного хука.
Видаляти хук потрібно після того, як він був доданий. А значить: якщо ви видаляєте хук, а він не видаляється, то швидше за все ви видаляєте його до того, як він додається в коді.
// видаляємо хук remove_action( 'wp_head', 'my_function', 20); // тут файли, що підключаються, і десь у них цей хук // додається так: add_action( 'wp_head', 'my_function', 20); // В результаті ваше видалення не працює!
У цьому випадку видалити хук можна повісивши видалення на інший, пізніший хук наприклад wp_loaded :
add_action( 'wp_loaded', function(){ remove_action( 'wp_head', 'my_function'); } );
ВАЖЛИВО: При видаленні хука, пріоритет (параметр $priority ) повинен збігатися із зазначеним під час створення хука. При розбіжності ви не побачите жодних попереджень про це – функція просто поверне false .
Читайте також: Хуки в WordPress (видалення хуків)
remove_filter()
(швидкість світла) | 50000 разів – 0.06 сек
(швидкість світла)
Хуків немає.
Повертає
true|false
. true – хук був вилучений. false – хук не був вилучений.
Використання
remove_action($tag, $function_to_remove, $priority);
-
$tag
(рядок) (обов’язковий) - Назва фільтра, функцію якого потрібно видалити.
-
$function_to_remove
(рядок) (обов’язковий) - Назва функції, яку потрібно видалити.
-
$priority
(число) -
Пріоритет хука (функції), встановленого під час додавання.
Типово: 10 -
$accepted_args
(видалений) - Видалено з версії 3.5.
Приклади
#1 Приклад відключення хука-події:
Відключимо дію wpautop
у хука the_content
:
remove_action( 'the_content', 'wpautop');
так само його можна відключити через remove_filter() – це ідентична функція:
remove_filter( 'the_content', 'wpautop');
#2 Приклад видалення хука-події для класу PHP
Якщо подія була додана з класу (наприклад, плагін додав якусь подію), то щоб її видалити вам потрібно знати конкретний екземпляр класу, який додав хук. Часто ці екземпляри класів зберігаються у глобальних змінних.
Приклад видалення хука викликаного з класу, записаного в глобальну змінну $my_class :
global $my_class; // це збережений екземпляр класу remove_action( 'the_content', array( $my_class, 'class_filter_function' ) );
Потрібно мати на увазі, що клас може додавати хук не відразу і видаляти його потрібно після того, як додано хук класом. З цієї причини ви можете вставляти правильний код видалення, але реального видалення хука може не відбуватися.
Коли видаляється хук, що створювався всередині класу, то передавати потрібно саме той екземпляр класу, з якого створювався хук.
#3 Видалення хука зі статичним методом класу
Допустимо хук був доданий таким кодом:
class My_Class { function __construct(){ // add hook add_action( 'checkout_init', [__CLASS__, 'force_login'], 10, 1); } static function force_login(){ // function code } } New My_Class();
Щоб видалити цей хук потрібно: по-перше, викликати функцію видалення пізніше і по-друге правильно передати назву методу:
add_action( 'wp_loaded', function(){ remove_action( 'checkout_init', [ 'My_Class', 'force_login' ], 10, 1); } );
#4 Інші приклади
Ще приклади дивіться в описі функції remove_filter() .
список змін
З версії 1.2.0 | Введено. |
Код remove_action() remove action WP 6.0.2
function remove_action( $hook_name, $callback, $priority = 10 ) { return remove_filter($hook_name, $callback, $priority); }