Filter Hook
Коротко
Вид хука WordPress, который передаёт значение через цепочку подключённых функций: каждая может его изменить и обязана вернуть результат дальше.
Что такое «Filter Hook»
Фильтры нужны там, где WordPress готовит данные перед использованием: текст записи перед выводом, длину анонса, заголовок страницы, список классов у тега, письмо перед отправкой. В коде ядра такая точка выглядит как $value = apply_filters( 'имя', $value, ...доп. данные ). Подключённые через add_filter() функции выстраиваются по приоритету, и результат первой становится входом второй.
Вместе с action hook фильтры образуют систему хуков WordPress. Разница практическая: действие «делает», фильтр «меняет и отдаёт». Технически обе функции регистрируют обработчик одинаково, но вернуть значение из фильтра — обязанность разработчика.
Пример: короче анонсы и ссылка «Читать»
add_filter( 'excerpt_length', function () {
return 25; // слов вместо стандартных 55
} );
add_filter( 'excerpt_more', function () {
return ' … <a href="' . esc_url( get_permalink() ) . '">Читать</a>';
} );
Оба фильтра встроены в ядро и меняют вывод the_excerpt() во всех шаблонах темы сразу, без правки каждого файла.
Типичные ошибки
- Функция ничего не возвращает. Тогда дальше по цепочке уходит
null, и, например, у фильтраthe_contentпропадает текст всех записей. - Вывод через
echoвнутри фильтра. Текст появится не там, где ожидалось, — часто над шапкой сайта. - Забытый параметр
$accepted_args. Если хук передаёт дополнительные аргументы, например ID записи, без указания их числа функция получит только первое значение. - Слишком тяжёлая работа в фильтре, который вызывается сотни раз за запрос:
gettext,option_*. Запрос к базе внутри такого обработчика заметно замедляет страницу.
Когда фильтр не подходит
Если нужно не поменять данные, а отреагировать на событие — отправить уведомление, записать лог, — правильнее действие. Фильтр, у которого результат игнорируется, сбивает с толку тех, кто будет читать код после вас.

