Как использовать хуки для создания новых функционалов в WordPress

В WordPress хуки — это мощный инструмент для расширения и изменения стандартного поведения CMS без правки исходного кода ядра или плагинов. Они позволяют подключать свои функции в определённые места выполнения WordPress. В этой статье мы подробно рассмотрим, как правильно использовать хуки, разберём разницу между actions и filters, а также приведём практические примеры с кодом, которые помогут вам создавать новые функционалы на сайте.

Что такое хуки в WordPress: actions и filters

Хуки — это точки подключения вашей пользовательской логики. Существует два основных типа:

  • Actions (действия) — позволяют добавить дополнительный код в определённом месте. Они ничего не возвращают, выполняют свои операции и завершаются.
  • Filters (фильтры) — позволяют изменить или отфильтровать данные перед их использованием или выводом. Они принимают переменную, изменяют её и возвращают обратно.

Понимание этих различий — ключ к грамотному использованию хуков.

Как работает add_action и add_filter

Функции wp_shablon_add_action() и wp_shablon_add_filter() аналогичны стандартным add_action() и add_filter(), но мы используем префикс для примера:

function wp_shablon_add_action($hook_name, $callback, $priority = 10, $accepted_args = 1) {
    add_action($hook_name, $callback, $priority, $accepted_args);
}

function wp_shablon_add_filter($hook_name, $callback, $priority = 10, $accepted_args = 1) {
    add_filter($hook_name, $callback, $priority, $accepted_args);
}

Здесь $hook_name — имя хука, $callback — ваша функция, $priority — приоритет выполнения (меньше — раньше), $accepted_args — количество аргументов, которые принимает callback.

Пример 1: Добавление сниппета для изменения заголовка сайта через filter

Допустим, нужно динамически менять заголовок в <title> в зависимости от даты. Для этого используем фильтр wp_title:

function wp_shablon_dynamic_wp_title($title) {
    $date = date('d-m-Y');
    return $title . ' | Сегодня: ' . $date;
}
wp_shablon_add_filter('wp_title', 'wp_shablon_dynamic_wp_title');

Этот код добавляет в заголовок текущую дату, что может быть полезно для новостных сайтов или блогов.

Пример 2: Вставка произвольного текста после контента с помощью action

Чтобы добавить блок с рекламой или ссылкой после текста записи, используем action the_content:

function wp_shablon_add_text_after_content($content) {
    if (is_single()) {
        $content .= '<div class="custom-ad">Поддержите наш проект!</div>';
    }
    return $content;
}
wp_shablon_add_filter('the_content', 'wp_shablon_add_text_after_content');

Обратите внимание, что для изменения содержимого мы применяем именно фильтр the_content, а не действие. Это частая путаница — выводить или изменять содержимое.

Отличие фильтров и действий на практике

Если нужно изменить данные — используйте фильтры. Если хотите выполнить действие в определённом месте (например, отправить уведомление, записать логи) — используйте действия.

Как найти нужный хук для решения задачи

Иногда сложно понять, какой именно хук использовать. Вот несколько рекомендаций:

  • Используйте официальный кодексы WordPress (Hooks Reference), там описаны почти все хуки.
  • Включите отладку и залогируйте хуки, вызываемые на странице. Для этого можно использовать плагин Query Monitor.
  • Посмотрите исходный код темы или плагина, чтобы найти вызовы do_action() и apply_filters().

Пример 3: Создание собственного хука для расширения темы

Иногда нужно добавить точку расширения в вашу тему или плагин, чтобы другие могли подключать свой код без правки файлов. Создадим action-хук в файле functions.php темы:

function wp_shablon_after_post() {
    do_action('wp_shablon_after_post_hook');
}

В нужном месте шаблона вызовите функцию:

<?php wp_shablon_after_post(); ?>

Теперь другие разработчики могут подключить свои функции к этому хуку:

function wp_shablon_custom_message() {
    echo '<p>Спасибо за чтение!</p>';
}
wp_shablon_add_action('wp_shablon_after_post_hook', 'wp_shablon_custom_message');

Советы по работе с хуками для разработчиков

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

2. Не забывайте о приоритете выполнения — при необходимости изменяйте его, чтобы ваш код сработал в нужный момент.

3. Используйте remove_action() и remove_filter(), чтобы отключать ненужные хуки — это помогает оптимизировать работу сайта.

4. Тестируйте свои хуки на разных этапах загрузки страницы, чтобы избежать ошибок и конфликтов.

Пример отключения стандартного хука

function wp_shablon_disable_emojis() {
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('wp_print_styles', 'print_emoji_styles');
}
wp_shablon_add_action('init', 'wp_shablon_disable_emojis');

Этот код отключает встроенную поддержку эмодзи, что может ускорить загрузку сайта.

Заключение по теме хуков в WordPress

Хуки — это фундаментальная часть архитектуры WordPress, которая позволяет создавать гибкие, расширяемые сайты без вмешательства в ядро. Освоив работу с actions и filters, вы сможете значительно улучшить функциональность вашего проекта, создавать плагины и темы с возможностями для дальнейшего развития. Практикуйтесь на реальных задачах, изучайте чужие решения и экспериментируйте с хуками, чтобы стать уверенным разработчиком WordPress.

Как создать адаптивный шаблон WordPress с помощью SASS
25.11.2025
Как добавить динамические поля в формы WordPress с помощью ACF
12.03.2026
WooCommerce: использование атрибутов товаров для фильтрации и SEO
23.05.2026
Как создать динамические выборы (селекты) в админке WordPress с примерами кода
30.12.2025
Как настроить автоматическое обновление шаблонов WordPress без рисков
08.03.2026