Что такое фильтры?
Фильтры - это функции, через которые WordPress передает данные в определенные моменты выполнения непосредственно перед тем, как предпринимать какие-либо действия с данными (например, добавлять их в базу данных или отправлять на экран браузера). Фильтры располагаются между базой данных и браузером (когда WordPress генерирует страницы) и между браузером и базой данных (когда WordPress добавляет новые сообщения и комментарии в базу данных); Большая часть ввода и вывода в WordPress проходит как минимум через один фильтр. WordPress выполняет некоторую фильтрацию по умолчанию, и ваш плагин может добавить свою собственную фильтрацию.
Привязка к фильтру
Чтобы позволить пользователям изменять некоторые конкретные данные (значение, выходные данные функции и т. Д.), Через apply_filters
функции предоставляются ловушки фильтра .
Эти ловушки фильтра включают имя (или тег ) фильтра и, по крайней мере, имя функции, которая должна использоваться для фильтрации (то есть, изменения каким-либо образом) данных.
Чтобы изменить заголовок сообщения, вы можете использовать the_title
ловушку фильтра, которая определяется следующим образом:
apply_filters( 'the_title', $title, $id );
Это означает, что фильтр имеет тег / имя the_title
, первый параметр $title
- это данные, которые должны быть изменены (т. Е. Заголовок записи), а второй параметр $id
- дополнительная информация (в данном случае идентификатор записи).
Например, чтобы отобразить заголовок каждого сообщения в UPPERCASE, вы можете использовать следующую строку:
add_filter('the_title', 'strtoupper');
Если мы посмотрим на add_filter
функцию, мы увидим, что она определяется следующим образом:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Мы указали только первый и второй (обязательный) параметр, в то время как третий и четвертый параметры установлены в соответствующие значения по умолчанию (т. Е. 10
И 1
).
Более сложный фильтр
Если вы хотите отфильтровать только определенный пост , вы можете использовать дополнительную информацию (в случае этого фильтра: идентификатор). Чтобы сделать это, вам нужно указать количество параметров (в данном случае это 2), а для того, чтобы сделать это снова, вам нужно указать параметр приоритета (который предшествует количеству аргументов).
Предположим, мы хотим повлиять только на заголовок поста с идентификатором 42, тогда он выглядит так:
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
В этом случае мы должны указать все четыре доступных параметра.
Какие параметры у меня есть?
Чтобы определить (количество) доступных параметров определенного фильтра, вы должны посмотреть, где он определен (в данном случае: здесь ).
Рекомендации :