Apply_filters() - функция WordPress
Опубликовано: 01.09.2018
Одна из функций, входящих в часть функционала хуков в WordPress.
Суть этой функции в том, что где-то в коде, который пользователю изменять не стоит (например потому что тогда не получится спокойно обновляться), висит эта функция, определяющая название фильтра и благодаря ей, уже при помощи add_filter() , на этот фильтр мы можем повесить дополнительные функции, которые приведут переменную $value к тому значению, которое нам и нужно.
Незаменима при создании хорошего плагина.
apply_filters ( $tag , $value , $arg , $arg1 ... ) |
Пример использования функции при фильтрации контента поста
Довольно простой пример и я его уже рассматривал когда-то. Вы возможно знаете, что содержимое поста можно вывести разными способами. И вполне возможно вы также знаете, что есть функция 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(), оставляйте комментарий, обязательно помогу вам разобраться.
Сегодня | Завтра | ||
USD | 32.62 | 32.50 | |
EUR | 39.90 | 39.92 |
Обменник | Переходов |
Wmchanger | 6 |
E-Market | 5 |
WMtoCash.com | 4 |
Str-Money | 3 |
Hot-Change | 3 |
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки | |
Кошелек
|
|
Код
|
|
Обмен Webmoney |