Хуки — это основной механизм расширения и модификации функционала WordPress без изменения его исходного кода. Правильное использование хуков позволяет создавать гибкие и масштабируемые решения, адаптированные под конкретные задачи.
Что такое хуки в WordPress: действия и фильтры
В WordPress существуют два типа хуков: actions (действия) и filters (фильтры). Actions позволяют добавить или изменить поведение системы, выполняя произвольный код в определённые моменты работы WordPress. Filters позволяют изменить данные перед их выводом или обработкой.
Например, action wp_footer выполняет код перед закрывающим тегом </body>, а фильтр the_content позволяет изменить содержимое поста перед выводом.
Разберём подробнее, как использовать оба типа хуков на практике.
Использование Action Hooks: добавление функционала
Action-хуки используются, когда нужно добавить новую функциональность в определённое место WordPress. Для этого используется функция add_action(), которая принимает два обязательных параметра: имя хука и callback-функцию, которая будет вызвана.
Пример: добавим текст в подвал сайта через хук wp_footer:
function wpdevelop_add_footer_text() {
echo '<p style="text-align:center;">Спасибо за посещение сайта WPDevelop.ru</p>';
}
add_action('wp_footer', 'wpdevelop_add_footer_text');Этот код добавит в футер сайта текст с благодарностью. Очень простой, но наглядный пример добавления своего контента.
Применение Action Hooks для логики плагина
В плагинах action-хуки позволяют выполнять задачи при сохранении постов, регистрации пользователей и т.п. Например, можно автоматически отправлять уведомление при публикации новой записи:
function wpdevelop_notify_admin_new_post($post_ID) {
$post = get_post($post_ID);
$subject = 'Опубликована новая запись: ' . $post->post_title;
$message = 'Перейдите по ссылке для просмотра: ' . get_permalink($post_ID);
wp_mail(get_option('admin_email'), $subject, $message);
return $post_ID;
}
add_action('publish_post', 'wpdevelop_notify_admin_new_post');Здесь мы используем action publish_post, чтобы реагировать на публикацию записи.
Использование Filter Hooks: изменение данных
Фильтры позволяют перехватывать и изменять данные, которые WordPress готовится вывести или обработать. Для добавления фильтра используется add_filter() с теми же параметрами, что и для actions.
Пример: изменим содержимое поста, добавив в начало текст с предупреждением:
function wpdevelop_add_warning_to_content($content) {
if (is_single()) {
$warning = '<p style="color:red; font-weight:bold;">Внимание: это авторский материал.</p>';
$content = $warning . $content;
}
return $content;
}
add_filter('the_content', 'wpdevelop_add_warning_to_content');Так можно гибко менять любые данные: текст, заголовки, ссылки и даже сложные массивы.
Фильтры для оптимизации и безопасности
Фильтры часто применяют для удаления лишних тегов, изменения атрибутов или контроля доступа. Например, можно удалить атрибуты стилей из контента:
function wpdevelop_strip_inline_styles($content) {
return preg_replace('/<style.*?>.*?<\/style>/is', '', $content);
}
add_filter('the_content', 'wpdevelop_strip_inline_styles');Или ограничить длину заголовка:
function wpdevelop_limit_title_length($title) {
$max_length = 50;
if (mb_strlen($title) > $max_length) {
$title = mb_substr($title, 0, $max_length) . '...';
}
return $title;
}
add_filter('the_title', 'wpdevelop_limit_title_length');Как правильно создавать свои хуки в плагинах и темах
Чтобы сделать код плагина или темы расширяемым, нужно создавать собственные хуки. Это позволит другим разработчикам изменить поведение без правки исходников.
Пример создания action-хука:
do_action('wpdevelop_before_content');Или фильтра с передачей данных:
$custom_data = apply_filters('wpdevelop_custom_data', $custom_data);В коде плагина можно вставить эти вызовы в нужных местах, а пользователи подключать свои функции через add_action и add_filter.
Примеры полезных плагинов для работы с хуками
Если хочется визуально управлять хуками и отслеживать их, можно использовать плагины:
- Monitor Hooks — отображает все хуки, срабатывающие на странице;
- Clearfy Pro — оптимизация и управление функционалом WordPress, включая отключение ненужных хуков;
- WPCommunity — расширяет возможности хуков для сообществ на сайте.
Советы по работе с хуками для разработчиков
1. Всегда используйте префикс функции, связанный с вашим проектом, например, wpdevelop_, чтобы избежать конфликтов.
2. Проверяйте контекст, где срабатывает хук, чтобы не вызвать ошибок или лишних действий.
3. Используйте приоритет и количество аргументов функции в add_action и add_filter, например:
add_action('init', 'wpdevelop_custom_init', 20, 1);4. Документируйте хуки, если создаёте свои, чтобы другие разработчики понимали, где их можно использовать.
Заключение
Хуки — ключ к гибкой и мощной кастомизации WordPress. С их помощью можно расширять функционал без опасного редактирования ядра, создавать плагины и темы с максимально адаптивным поведением. Практикуйтесь в написании собственных хуков и интеграции сторонних — это значительно улучшит качество и удобство поддержки вашего кода.