remove_filter()
Удаляет указанную функцию прикрепленную к указанному фильтру.
Можно использовать, чтобы удалить какие-либо уже имеющиеся хуки в WordPress или для удаления хуков, которые добавляются плагинами, но мешают (конфликтуют) с кодом.
ВАЖНО: При удалении хука, приоритет ($priority) должен совпадать с тем, что был установлен при создании хука. Если не совпадет, вы не увидите никаких предупреждений об этом - функция просто вернет false.
Заметки
-
Невозможно удалить фильтр, до того как он был добавлен!
- Когда удаляется хук, который создавался внутри класса, то передавать нужно именно тот экземпляр класса из которого создавался хук.
Читайте также: Хуки в WordPress (удаление хуков)
Хуков нет.
Возвращает
true|false
. true — хук был удален или false — хук не был удален.
Использование
remove_filter( $tag, $function_to_remove, $priority );
- $tag(строка) (обязательный)
- Название фильтра, функцию которого нужно будет удалить.
- $function_to_remove(строка) (обязательный)
- Название функции, которую нужно удалить.
- $priority(число)
- Приоритет хука (функции), который был установлен во время добавления.
По умолчанию: 10
Примеры
#1 Отключим фильтр wpautop
у хука the_content
remove_filter( 'the_content', 'wpautop' );
#2 Удалим фильтр capital_P_dangit
у нескольких хуков сразу
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()
#4 Еще примеры удаления
Смотрите в статье про хуки.
Заметки
- Global. WP_Hook[]. $wp_filter Stores all of the filters and actions.
Список изменений
С версии 1.2.0 | Введена. |
Код remove_filter() remove filter WP 6.6.1
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; }