WordPress как на ладони
wordpress jino

remove_filter() WP 1.2.0

Удаляет указанную функцию прикрепленную к указанному фильтру.

Можно использовать, чтобы удалить какие-либо уже имеющиеся хуки в WordPress или для удаления хуков, которые добавляются плагинами, но мешают (конфликтуют) с кодом.

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

Используется в: remove_action().
✈ 1 раз = 0.с = скорость света | 50000 раз = 0.06с = скорость света

Хуков нет.

Возвращает

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

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

<?php remove_filter($tag, $function_to_remove, $priority, $accepted_args); ?>
$tag(строка) (обязательный)
Название фильтра, функцию которого нужно будет удалить.
По умолчанию: нет
$function_to_remove(строка) (обязательный)
Название функции, которую нужно удалить.
По умолчанию: нет
$priority(число)
Приоритет хука (функции), который был установлен во время добавления.
По умолчанию: 10
$accepted_args(число)
Число аргументов хука.
По умолчанию: 1

Примеры

#1. Отключим фильтр wpautop у хука the_content

remove_filter( 'the_content', 'wpautop' );

#2. Удалим фильтр capital_P_dangit у хуков 'the_content', 'the_title', 'comment_text'

foreach ( array( 'the_content', 'the_title', 'comment_text' ) as $hook )
	remove_filter( $hook, 'capital_P_dangit' );

#3. Удаление фильтра добавленного из PHP класса

Если в качестве функции хука, используется функция какого-либо класса, то удалять её нужно по-другому:

global $my_class;
remove_filter( 'the_content', array( $my_class, 'class_filter_function') );

Подробнее про удаление фильтра для классов читайте в описании remove_action()

Заметки

Невозможно удалить фильтр, до того как он был добавлен!

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

Код remove filter: wp-includes/plugin.php WP 4.8.2

<?php
function remove_filter( $tag, $function_to_remove, $priority = 10 ) {
	global $wp_filter;

	$r = false;
	if ( isset( $wp_filter[ $tag ] ) ) {
		$r = $wp_filter[ $tag ]->remove_filter( $tag, $function_to_remove, $priority );
		if ( ! $wp_filter[ $tag ]->callbacks ) {
			unset( $wp_filter[ $tag ] );
		}
	}

	return $r;
}

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

Из метки: Фильтры (хуки)

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

remove_filter 5 комментариев
  • Невозможно удалить фильтр, до того как он был добавлен!

    А как угадать когда один из установленных у меня плагинов добавляет определённый фильтр (с приоритетом 10)? И как его всё-таки удалить? Функция remove_filter, добавленная в файл functions темы этот злосчастный фильтр удаляет. Добавленная в мой собственный плагин - нет. А я не хочу засорять functions и хочу, чтобы все изменения, внесённые мной в другие плагины находились в одном месте. Можно как-нибудь решить эту проблему?

    Ответить3 месяца назад #

Здравствуйте, !

Ваш комментарий