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

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

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

Хуки — это точки в коде WordPress, куда можно "подцепить" свои функции и таким образом изменить или дополнить стандартное поведение. Хуки делятся на два типа:

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

Понимание разницы между actions и filters — ключ к эффективному использованию хуков.

Как добавить свою функцию к хуку: базовый синтаксис

Для подключения функции к хуку используется функция add_action или add_filter. Формат следующий:

add_action('hook_name', 'wp_pro_custom_function', 10, 2);

Здесь:

  • 'hook_name' — имя хука, к которому привязываемся.
  • 'wp_pro_custom_function' — имя вашей функции.
  • 10 — приоритет вызова (чем меньше число, тем раньше вызовется функция).
  • 2 — количество аргументов, которые функция принимает.

Пример простой функции, которая добавляет текст в конец контента поста:

function wp_pro_append_text_to_content($content) {
    return $content . '<p>Спасибо, что прочитали статью!</p>';
}
add_filter('the_content', 'wp_pro_append_text_to_content');

Примеры использования actions: как выполнить код в нужный момент

Рассмотрим типичные кейсы, где actions позволяют расширить функциональность.

Добавление пользовательского сообщения в админку при сохранении поста

Вы можете отследить событие сохранения поста и вывести сообщение или выполнить дополнительную логику:

function wp_pro_post_save_message($post_id) {
    if (wp_is_post_revision($post_id)) {
        return;
    }
    // Выполняем нужные действия, например, логируем
    error_log('Пост с ID ' . $post_id . ' сохранён');
}
add_action('save_post', 'wp_pro_post_save_message');

Такой код позволяет не только логировать, но и, например, отправлять уведомления или обновлять метаданные.

Добавление скриптов и стилей через хук wp_enqueue_scripts

Чтобы правильно подключить CSS и JS, используйте следующий пример:

function wp_pro_enqueue_custom_scripts() {
    wp_enqueue_style('wp-pro-style', get_stylesheet_directory_uri() . '/css/custom-style.css');
    wp_enqueue_script('wp-pro-script', get_template_directory_uri() . '/js/custom-script.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'wp_pro_enqueue_custom_scripts');

Это гарантирует корректную загрузку ресурсов в тему.

Примеры использования filters: как изменить данные перед выводом

Filters дают возможность перехватить и изменить данные, которые WordPress собирается вывести или сохранить.

Изменение заголовка страницы

Можно динамически менять заголовок, например, добавлять бренд:

function wp_pro_modify_title($title) {
    if (is_singular('post')) {
        $title .= ' | WP-Pro.ru';
    }
    return $title;
}
add_filter('the_title', 'wp_pro_modify_title');

Такой фильтр добавит суффикс ко всем заголовкам постов.

Фильтр контента для вставки рекламы

Вставим рекламный блок после второго абзаца поста:

function wp_pro_insert_ad_after_paragraph($content) {
    if (is_single() && is_main_query()) {
        $ads_code = '<div class="wp-pro-ad">Реклама здесь</div>';
        $paragraphs = explode('</p>', $content);
        if (count($paragraphs) > 2) {
            $paragraphs[1] .= '</p>' . $ads_code;
            $content = implode('', $paragraphs);
        }
    }
    return $content;
}
add_filter('the_content', 'wp_pro_insert_ad_after_paragraph');

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

Для эффективной работы с хуками стоит учитывать несколько моментов:

  • Уникальные имена функций. Рекомендуется использовать префиксы, связанные с вашим проектом или сайтом, например, wp_pro_, чтобы избежать конфликтов.
  • Избегайте избыточных подключений. Подключайте функции только тогда, когда это нужно, используя проверки условий (например, is_admin(), is_single()).
  • Используйте правильный приоритет. Если несколько функций подключены к одному хуку, приоритеты помогут контролировать порядок их вызова.
  • Документируйте код. Пишите комментарии, чтобы другие разработчики быстро понимали назначение функций.

Отладка хуков

Для отладки хуков полезно использовать функции WordPress, например, do_action и apply_filters, а также плагины типа Query Monitor, которые показывают, какие хуки вызываются и в каком порядке.

Удаление хуков

Иногда нужно отключить стандартный хук, например, чтобы убрать функцию из темы или плагина. Для этого используется функция remove_action или remove_filter. Важно, чтобы параметры совпадали с теми, с которыми функция была добавлена.

remove_action('wp_footer', 'some_plugin_footer_function', 10);

Популярные плагины для работы с хуками

Хотя хуки пишутся вручную, есть плагины, которые помогают управлять ими и тестировать:

  • Code Snippets — позволяет добавлять PHP-код, в том числе хуки, прямо из админки без правки файлов.
  • WP Hooks — визуализирует хуки, которые доступны на странице, что облегчает поиск нужного места для подключения функций.
  • Query Monitor — для отладки, показывает активные хуки и другую информацию о запросах.

Использование этих инструментов ускорит разработку и повысит качество кода.

WooCommerce: как изменить URL товара после изменения атрибутов
07.05.2026
Как автоматически удалять пустые термины в таксономиях WordPress
12.04.2026
WooCommerce: использование хука woocommerce_before_cart_table для дополнительного контента в корзине
16.05.2026
Как создать обратный звонок в WordPress с помощью шорткода
07.04.2026
Как создать автоматический каталог файлов в WordPress
08.02.2026