WordPress: хуки фильтрации (filters)

· WordPress, Разработка плагинов и Хуки · 1 мин чтения

Фильтры — это один из видов хуков. Они дают возможность в корректировать логику в других функциях. Фильтры — это противоположность действиям.

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

Добавление фильтра

Процесс добавления фильтра имеет два этапа.

Для начала, вам нужно создать callback функцию, которая будет вызываться во время запуски фильтра. Далее, вам нужно добавить вашу функцию в хук, который будет её вызывать.

Для этого, вы можете использовать функцию add_filter(), в которую ваш нужно обозначить два аргумента: первый — название хука и второй — ваша callback функция.

Пример ниже запустится когда будет запущен хук the_title:

<?php
function wporg_filter_title($title)
{
    return 'Заголовок ' . $title . ' прошел фильтр';
}
add_filter('the_title', 'wporg_filter_title');

Давайте представим, что у нас есть пост с заголовком «Изучаю WordPress», тогда код выше исправит его на «Заголовок Изучаю WordPress прошел фильтр».

Если вам интересуют другие хуки, то вы можете пройтись по полному списку всех доступных хуков.

Как у вас будет появляться больше опыта в разработке под WordPress, смотря код WordPress вы сможете сами находить подходящие вам хуки.

Дополнительные параметры

Функция add_filter() может принимать дополнительные параметры — $priority (приоритет) и $accepted_args для указания количества аргументов, которое может пускаться в callback функцию.

Пример

Если вам нужно добавить собственный CSS класс к <body> тэгу, то вы можете сделать это следующим образом:

<?php
function bologer_css_body_class($classes)
{
    if (!is_admin()) {
        $classes[] = 'wordpress-plugin-dev';
    }
    return $classes;
}
add_filter('body_class', 'bologer_css_body_class');