http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Главная Новости

Apply_filters() - функция WordPress

Опубликовано: 01.09.2018

видео apply_filters() - функция WordPress

Get start with add_filter hook in wordpress

Одна из функций, входящих в часть функционала хуков в WordPress.

Суть этой функции в том, что где-то в коде, который пользователю изменять не стоит (например потому что тогда не получится спокойно обновляться), висит эта функция, определяющая название фильтра и благодаря ей, уже при помощи add_filter() , на этот фильтр мы можем повесить дополнительные функции, которые приведут переменную $value к тому значению, которое нам и нужно.



Незаменима при создании хорошего плагина.

apply_filters ( $tag , $value , $arg , $arg1 ... )
$tag (строка) Собственно это и есть название фильтра — на него мы и будем вешать произвольную функцию при помощи add_filter() . Название должно быть уникальным. $value (число|строка|массив|объект) Сама переменная, отфильтрованное значение которой функция должна будет возвратить. Результат действия функции apply_filters() не обязательно присваивать переменной с тем же самым названием. $arg Одна или несколько дополнительных переменных, которые будут переданы в нашу произвольную (возвратную) функцию.

Пример использования функции при фильтрации контента поста

Довольно простой пример и я его уже рассматривал когда-то. Вы возможно знаете, что содержимое поста можно вывести разными способами. И вполне возможно вы также знаете, что есть функция get_the_content() , возвращающая неотфильтрованный контент поста, и the_content() , которая как раз таки выводит отфильтрованный контент. Под отфильтрованным содержимом поста я имею ввиду, что к нему применены все шорткоды, произведены соответветствующие замены, например - на — и так далее.


Wordpress - ¿Qué son los filtros y como usarlos? Add Filter | Apply Filters - Codex

Так вот, при помощи функции apply_filters() мы можем сами вручную отфильтровать контент из функции get_the_content() .

$content_no_filter = get_the_content ( ); // содержимое поста неотфильтрованное $content_filter_applied = apply_filters ( 'the_content' , $content_no_filter ) ; // отфильтрованное

Пошаговый пример создания своего собственного фильтра

Всё начинается с переменной, на которую мы должны воздействовать извне. Переменная может быть обычным числовым значением, может быть объектом, а может быть HTML-кодом например какого-нибудь виджета.

У меня для простоты примера пусть это будет числовая переменная.

Теперь же допустим я хочу задать какой-нибудь дополнительный параметр, под воздействием которого переменная будет меняться. Опять-таки для простоты примера возьму простое строковое значение.

$arg1 = 'больше' ; // эта переменная допустим также может принимать значение 'меньше'

Теперь объединяем эти два листинга и вешаем фильтр.

$number = 100 ; $arg1 = 'больше' ; $number = apply_filters ( 'misha_filter_name' , $number , $arg1 ) ;

А теперь сама фильтрующая функция, которую мы подвесим при помощи add_filter() .

add_filter ( 'misha_filter_name' , 'misha_filter_function' , 10 , 2 ) ; // цифра 10 это приоритет приоритет выполнения функции (нужен, если фильтрующих функций несколько) // 2 это количество всех параметров функции, в данном случае $number и $arg1 // 10 и 1 - значения по умолчанию соответственно function misha_filter_function ( $number , $arg1 ) { if ( $arg1 == 'больше' ) $number = $number + 50 ; if ( $arg1 == 'меньше' ) $number = $number - 50 ; return $number ; }

Как результат, получаем изменённое значение переменной. Если у вас есть трудности или вопросы по работе apply_filters(), оставляйте комментарий, обязательно помогу вам разобраться.

Карта
rss