WordPress как на ладони
Черная пятница на хостинге fornex.com! Новые WordPress шаблоны

remove_filter() WP 1.2.0

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

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

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

Является основой для: remove_action()
✈ 1 раз = 0.с = скорость света | 50000 раз = 0.06с = скорость света

Хуков нет.

Возвращает

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

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

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 VER 4.9.8

<?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вязанные функции

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

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

4 коммента
  • Андрей

    Добрый день, вот у меня есть страница, в которой по не понятным мне причинам добавляет тег p я его хочу отключить, но для этой только страницы.. можно ли?

    в function я прописал следующее, но не помогает.. может я не так пишу или это надо вставить в другое место

    if( is_page(488) ){
    	 remove_filter( 'the_content', 'wpautop' );
    }
    • @ campusboy3061 cайт: www.youtube.com/c/wpplus

      Привет. Попробуй так в functions.php:

      add_action( 'wp', function () {
      	if ( is_page( 488 ) ) {
      		remove_filter( 'the_content', 'wpautop' );
      	}
      } );
      1
      • Андрей

        Сделал таким образом
        При обвертывании текста тегом [raw] срабатывает все фильтра.. То есть там, где мне нужно.. это удобнее

        function my_formatter($content) {
        $new_content = '';
        $pattern_full = '{(\[raw\].*?\[/raw\])}is';
        $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
        $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);
        
        foreach ($pieces as $piece) {
        if (preg_match($pattern_contents, $piece, $matches)) {
        $new_content .= $matches[1];
        } else {
        $new_content .= wptexturize(wpautop($piece));
        }
        }
        return $new_content;
        }
        remove_filter('the_content', 'wpautop');
        remove_filter('the_content', 'wptexturize');
        add_filter('the_content', 'my_formatter', 99);
  • @ Юрий

    Как сделать, чтобы можно было писать html в названии меток?

    Ответить24 дня назад #
Здравствуйте, !     Войти . Зарегистрироваться