remove_filter() WP 1.2.0

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

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

ВАЖЛИВО: При видаленні хука, пріоритет ($priority) повинен збігатися з тим, що був встановлений під час створення хука. Якщо не збігається, ви не побачите жодних попереджень про це – функція просто поверне false.

нотатки
  • Неможливо видалити фільтр, перш ніж він був доданий!

  • Коли видаляється хук, що створювався всередині класу, то передавати потрібно саме той екземпляр класу, з якого створювався хук.
Основа для:
remove_action()
1 раз – 0. сек
(швидкість світла) | 50000 разів – 0.06 сек
(швидкість світла)

Хуків немає.

Повертає

true|false. true – хук було видалено або false – хук не видалено.

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

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


Типово: 10
$accepted_args
(видалений у WP 3.5)
Цей параметр не можна вказувати.

Приклади

0

#1 Відключимо фільтр wpautopу хукаthe_content

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

#2 Видалимо фільтр capital_P_dangitу кількох хуків відразу

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

#3 Видалення фільтра доданого з PHP класу

Якщо як функція хука, використовується функція якого-небудь класу, то видаляти її потрібно по-іншому:

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

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

0

#4 Ще приклади видалення

Дивіться у статті про хуки .

нотатки

  • Global. WP_Hook[]. $wp_filter Stores all of the filters and actions.

список змін

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

Код remove_filter() WP 6.0.2

function remove_filter( $hook_name, $callback, $priority = 10 ) {
	Global $wp_filter;

	$ r = false;

	if ( isset( $wp_filter[ $hook_name ] ) ) {
		$r = $wp_filter[ $hook_name ]->remove_filter( $hook_name, $callback, $priority );

		if ( ! $wp_filter[ $hook_name ]->callbacks ) {
			unset($wp_filter[$hook_name]);
		}
	}

	return $r;
}

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

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