remove_filter

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

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

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

Заметки

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

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

Код из


wp-includes/plugin.php

WP 4.7.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;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *