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

Хуки (hooks) — один из ключевых механизмов расширения функционала WordPress, который позволяет разработчикам внедрять собственный код без изменения исходных файлов ядра и тем. Они делятся на два типа: actions и filters. Разберёмся, как правильно использовать хуки на практике, чтобы создавать надёжные и устойчивые к обновлениям решения.

Что такое хуки в WordPress и зачем они нужны

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

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

Стандартный синтаксис добавления хука выглядит так:

add_action('hook_name', 'wordpressy_my_custom_function');
function wordpressy_my_custom_function() {
    // Ваш код
}

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

Практические примеры использования Actions

Добавление произвольного текста после контента записи

Предположим, вам нужно добавить свой текст или HTML после содержимого каждой записи. Для этого используем action the_content через фильтр:

add_filter('the_content', 'wordpressy_add_custom_text_after_content');
function wordpressy_add_custom_text_after_content($content) {
    if (is_single()) {
        $custom_text = '<p>Спасибо за прочтение! Подписывайтесь на наши обновления.</p>';
        return $content . $custom_text;
    }
    return $content;
}

В этом примере мы используем фильтр, чтобы добавить текст только на странице отдельной записи.

Отправка письма администратору при публикации новой записи

Для выполнения действия при событии публикации записи используем action publish_post:

add_action('publish_post', 'wordpressy_notify_admin_on_new_post');
function wordpressy_notify_admin_on_new_post($post_ID) {
    $post = get_post($post_ID);
    $admin_email = get_option('admin_email');
    $subject = 'Новая запись опубликована';
    $message = 'Опубликована новая запись: ' . $post->post_title . '\n' . get_permalink($post_ID);
    wp_mail($admin_email, $subject, $message);
}

Таким образом, администратор получит уведомление на почту сразу после публикации записи.

Фильтры: как изменять данные WordPress

Замена стандартного заголовка на динамический

Если нужно динамически изменить заголовок страницы, можно использовать фильтр the_title:

add_filter('the_title', 'wordpressy_dynamic_title', 10, 2);
function wordpressy_dynamic_title($title, $id) {
    if (is_singular('post') && in_the_loop() && !is_admin()) {
        $title .= ' - Эксклюзив от WordPressy';
    }
    return $title;
}

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

Изменение количества слов в отрывке (excerpt)

По умолчанию WordPress выводит 55 слов в отрывке. С помощью фильтра excerpt_length можно настроить это значение:

add_filter('excerpt_length', 'wordpressy_custom_excerpt_length', 999);
function wordpressy_custom_excerpt_length($length) {
    return 30; // 30 слов
}

Это полезно для кастомизации внешнего вида блога.

Советы по работе с хуками в WordPress

Используйте префиксы в именах функций

Чтобы избежать конфликтов с другими плагинами и темами, всегда добавляйте уникальный префикс к вашим функциям, как в примерах выше wordpressy_. Это хорошая практика при разработке.

Соблюдайте правильные приоритеты и количество аргументов

При добавлении хуков всегда указывайте приоритет и количество аргументов, если это необходимо. Например:

add_filter('hook_name', 'wordpressy_function', 20, 2);

Чем ниже число приоритета, тем раньше сработает функция. По умолчанию приоритет 10.

Отсоединение хуков

Иногда нужно отключить стандартное поведение WordPress или плагинов. Для этого используют remove_action или remove_filter. Например:

remove_action('wp_head', 'wp_generator');

Этот код удалит мета-тег версии WordPress из <head>, что полезно для безопасности.

Интеграция хуков с популярными плагинами

Если вы используете плагины с сайта WPSHOP.RU, хуки помогут расширить их функционал. Например, для плагина My Popup можно через action добавить показ всплывающего окна после загрузки страницы:

add_action('wp_footer', 'wordpressy_show_mypopup');
function wordpressy_show_mypopup() {
    if (function_exists('mypopup_show')) {
        mypopup_show();
    }
}

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

Выводы и рекомендации

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

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

Как использовать REST API для создания кастомных эндпоинтов в WordPress
10.12.2025
Как использовать хуки для расширения функционала WordPress
18.12.2025
Автоматическое изменение стоимости товара в WooCommerce при изменении атрибутов
07.05.2026
Автоматическое изменение цены товара при обновлении в WooCommerce
22.04.2026
Как отладить проблемы с авторизацией через REST API в WordPress
20.03.2026