4.2 Фильтры (Filters)

Фильтры – один из двух типов Хуков (hooks).

Они дают возможность функциям изменять данные других функций. Они являются аналогом действий (Action’ов).

В отличие от Actions, фильтры предназначены для изолированной работы и никогда не должны иметь побочных эффектов, таких как воздействие на глобальные переменные и вывод.

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

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

Во-первых, вам нужно создать функцию обратного вызова, которая будет вызываться при запуске фильтра. Во-вторых, вам нужно добавить функцию Callback (Обратный вызов) на хук, который будет выполнять вызов этой функции.

Вы будете использовать функцию add_filter(), передавая как минимум два параметра, string $tag, вызываемую $function_to_add.

Пример ниже будет запущен при выполнении the_title.

<?php
function wporg_filter_title($title)
{
    return 'The ' . $title . ' was filtered';
}
add_filter('the_title', 'wporg_filter_title');

Допустим, у нас есть заголовок публикации “Learning WordPress”, в приведенном выше примере он будет изменен на “The Learning WordPress was filtered”.

Список доступных хуков можно найти в главе “Хуки“.

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

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

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

Подробное объяснение этих параметров можно найти в статье о действиях.

Пример

Добавление класса CSS к тегу при выполнении определенного условия:

<?php
function wporg_css_body_class($classes)
{
    if (!is_admin()) {
        $classes[] = 'wporg-is-awesome';
    }
    return $classes;
}
add_filter('body_class', 'wporg_css_body_class');

Наверх ↑