WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Получай пассивный доход от сайта с помощью браузерных PUSH уведомлений

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.

Примеры

#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() WP 5.7.2

<?php
function remove_action( $tag, $function_to_remove, $priority = 10 ) {
	return remove_filter( $tag, $function_to_remove, $priority );
}

Из метки: События (хуки)

Еще из раздела: Хуки: события, фильтры

15 комментов
Полезные 2 Вопросы 2 Все
    Войти