remove_action() WP 1.2.0

Видаляє хук (подія або фільтр). Видаляє функцію, прикріплену до зазначеного хука.

Видаляти хук потрібно після того, як він був доданий. А значить: якщо ви видаляєте хук, а він не видаляється, то швидше за все ви видаляєте його до того, як він додається в коді.

// видаляємо хук
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 .

Працює на основі:
remove_filter()
1 раз – 0.00001 сек
(швидкість світла) | 50000 разів – 0.06 сек
(швидкість світла)

Хуків немає.

Повертає

true|false. true – хук був вилучений. false – хук не був вилучений.

Використання

remove_action($tag, $function_to_remove, $priority);
$tag
(рядок) (обов’язковий)
Назва фільтра, функцію якого потрібно видалити.
$function_to_remove
(рядок) (обов’язковий)
Назва функції, яку потрібно видалити.
$priority
(число)
Пріоритет хука (функції), встановленого під час додавання.


Типово: 10
$accepted_args
(видалений)
Видалено з версії 3.5.

Приклади

0

#1 Приклад відключення хука-події:

Відключимо дію wpautopу хука the_content:

remove_action( 'the_content', 'wpautop');

так само його можна відключити через remove_filter() – це ідентична функція:

remove_filter( 'the_content', 'wpautop');
0

#2 Приклад видалення хука-події для класу PHP

Якщо подія була додана з класу (наприклад, плагін додав якусь подію), то щоб її видалити вам потрібно знати конкретний екземпляр класу, який додав хук. Часто ці екземпляри класів зберігаються у глобальних змінних.

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

global $my_class; // це збережений екземпляр класу
remove_action( 'the_content', array( $my_class, 'class_filter_function' ) );

Потрібно мати на увазі, що клас може додавати хук не відразу і видаляти його потрібно після того, як додано хук класом. З цієї причини ви можете вставляти правильний код видалення, але реального видалення хука може не відбуватися.

Коли видаляється хук, що створювався всередині класу, то передавати потрібно саме той екземпляр класу, з якого створювався хук.

0

#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);
} );
0

#4 Інші приклади

Ще приклади дивіться в описі функції remove_filter() .

список змін

З версії 1.2.0Введено.

Код remove_action() WP 6.0.2

function remove_action( $hook_name, $callback, $priority = 10 ) {
	return remove_filter($hook_name, $callback, $priority);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *