Хуки (hooks) — это одна из самых мощных возможностей WordPress, позволяющая вмешиваться в логику работы сайта без изменения исходного кода ядра, тем или плагинов. Они позволяют добавлять, изменять или удалять функционал, делая код гибким и масштабируемым. В этой статье мы подробно разберём, как использовать хуки — actions и filters, с примерами, которые помогут вам писать эффективный и поддерживаемый код.
Что такое хуки WordPress: действия и фильтры
В WordPress хуки делятся на два типа: actions (действия) и filters (фильтры). Actions позволяют привязать выполнение своей функции в определённый момент времени — например, при сохранении поста, загрузке страницы или инициализации темы. Filters же позволяют изменить данные до того, как они будут использованы или выведены. Это мощный инструмент для изменения контента, настроек и поведения без правки исходника.
Например, action срабатывает, когда пользователь публикует запись, а filter — когда выводится заголовок записи, позволяя изменить его на лету.
Как использовать actions в WordPress: примеры и лучшие практики
Для использования actions применяется функция add_action(). Вот базовый пример — добавим сообщение в футер сайта:
function wpteam_add_footer_message() {
echo '<p>Спасибо, что посетили наш сайт!</p>';
}
add_action('wp_footer', 'wpteam_add_footer_message');Здесь мы подключаем функцию к хуку wp_footer, которая вызывается внизу страницы. В результате в футере появится кастомное сообщение.
Важно: названия функций советуем начинать с префикса, связанного с вашим проектом (например, wpteam_), чтобы избежать конфликтов с другими плагинами и темами.
Ещё один пример — добавим кастомный класс к тегу <body>:
function wpteam_body_class_custom($classes) {
$classes[] = 'wpteam-custom-class';
return $classes;
}
add_filter('body_class', 'wpteam_body_class_custom');Хотя здесь используется add_filter, это демонстрирует, как можно расширять стандартные возможности WordPress.
Когда использовать actions
Actions подходят для:
- Добавления скриптов и стилей (хуки
wp_enqueue_scripts,admin_enqueue_scripts); - Отправки email при определённых событиях (например, после публикации поста);
- Выполнения задач в процессе загрузки страницы;
- Логирования или выполнения побочных эффектов.
Фильтры в WordPress: как изменить данные перед выводом
Filters позволяют изменить данные, которые WordPress собирается вывести или сохранить. Например, можно изменить заголовок, контент, метаданные и многое другое.
Пример — изменим вывод заголовка записи, добавив префикс:
function wpteam_filter_the_title($title) {
if (is_singular('post')) {
$title = 'Статья: ' . $title;
}
return $title;
}
add_filter('the_title', 'wpteam_filter_the_title');Это простой фильтр, который добавляет слово «Статья:» перед заголовком всех постов.
Примеры полезных фильтров
the_content— изменить содержимое поста перед выводом;excerpt_length— изменить длину отрывка;upload_mimes— добавить поддержку новых типов файлов для загрузки;widget_text— изменять текст в виджетах.
Практическое создание собственного хука в WordPress
Вы можете создавать свои собственные хуки, которые позволят расширять функционал вашего плагина или темы другими разработчиками.
Создадим action-хук wpteam_custom_hook и вызовем его:
function wpteam_do_something() {
do_action('wpteam_custom_hook');
}
// Вызов функции
wpteam_do_something();Теперь в другом месте можно подключиться к этому хуку:
function wpteam_custom_hook_function() {
echo '<p>Это сообщение от кастомного хука!</p>';
}
add_action('wpteam_custom_hook', 'wpteam_custom_hook_function');Аналогично можно создавать и фильтры с помощью apply_filters().
Советы по работе с хуками: отладка и организация кода
Чтобы работать с хуками эффективно, придерживайтесь следующих рекомендаций:
- Используйте понятные и уникальные префиксы для функций и названий хуков, чтобы избежать конфликтов.
- Документируйте, к каким хукам привязаны ваши функции и что они делают.
- Для отладки хуков полезны плагины, например, Query Monitor, который показывает, какие хуки срабатывают на странице.
- Не злоупотребляйте слишком большим количеством хуков — это может замедлить сайт.
Заключение по теме хуков в WordPress
Хуки — это фундамент для написания расширяемого и гибкого кода в WordPress. Понимание разницы между actions и filters, а также умение создавать и использовать их правильно — ключевой навык для любого разработчика. Приведённые в статье примеры помогут вам быстрее освоить этот инструмент и использовать его для решения реальных задач.