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

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

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

Существует два основных типа хуков: actions и filters. Actions позволяют выполнять собственный код в определённые моменты, а filters — изменять данные перед их выводом или сохранением.

Использование хуков — обязательный навык для любого разработчика на WordPress, так как это основа расширяемости и кастомизации.

Разница между actions и filters: основные понятия

Что такое Action-хуки

Action-хуки вызываются в определённые моменты выполнения WordPress, например, при загрузке страницы, сохранении записи, создании меню и т.п. Они не возвращают значения, а просто выполняют код.

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

add_action('wp_footer', 'wpdirect_add_footer_text');
function wpdirect_add_footer_text() {
    echo '<p>Спасибо, что посетили наш сайт!</p>';
}

Что такое Filter-хуки

Filter-хуки позволяют изменять данные до их вывода или сохранения. Они принимают значение, изменяют его и возвращают обратно.

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

add_filter('the_title', 'wpdirect_modify_post_title');
function wpdirect_modify_post_title($title) {
    return 'WPDirect: ' . $title;
}

Как правильно создавать свои хуки в плагинах и темах

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

Для объявления собственного action-хука используйте функцию do_action(). Например:

do_action('wpdirect_before_content');

В другом месте можно подключить обработчик:

add_action('wpdirect_before_content', 'wpdirect_custom_message');
function wpdirect_custom_message() {
    echo '<p>Это сообщение выводится перед контентом.</p>';
}

Для фильтров используйте apply_filters():

$content = apply_filters('wpdirect_filter_content', $content);

Так вы даёте другим возможность изменить переменную $content перед её использованием.

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

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

Иногда требуется добавить кастомный стиль без изменения файлов темы. Используем action-хук wp_head:

add_action('wp_head', 'wpdirect_custom_css');
function wpdirect_custom_css() {
    echo '<style>body {background-color: #f5f5f5;}</style>';
}

Фильтрация контента для удаления определённых слов

Если нужно автоматически менять или удалять слова из контента, используем filter-хук the_content:

add_filter('the_content', 'wpdirect_filter_bad_words');
function wpdirect_filter_bad_words($content) {
    $bad_words = ['плохое', 'запрещенное'];
    return str_ireplace($bad_words, '***', $content);
}

Автоматическое добавление ссылки на авторизацию в меню

Для динамического изменения меню можно использовать filter-хук wp_nav_menu_items:

add_filter('wp_nav_menu_items', 'wpdirect_add_login_link', 10, 2);
function wpdirect_add_login_link($items, $args) {
    if ($args->theme_location == 'primary') {
        if (is_user_logged_in()) {
            $items .= '<li><a href="' . wp_logout_url() . '">Выйти</a></li>';
        } else {
            $items .= '<li><a href="' . wp_login_url() . '">Войти</a></li>';
        }
    }
    return $items;
}

Советы по отладке и оптимизации хуков

Иногда хуки не срабатывают как ожидается. Для отладки советую использовать функции error_log() внутри ваших функций, чтобы отслеживать вызовы.

Не забывайте про приоритет выполнения функции, он задаётся третьим параметром, например:

add_action('init', 'wpdirect_init_function', 20);

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

Оптимизируйте функции, подключённые к хукам, чтобы они не замедляли загрузку страниц. Избегайте долгих операций внутри хуков.

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

Plugin Organizer

Позволяет управлять порядком загрузки плагинов, что влияет на работу хуков.

Code Snippets

Удобный интерфейс для добавления и управления пользовательскими хуками без редактирования functions.php.

Hook Me Up

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

WooCommerce: решение проблемы с отображением страниц товаров и категорий
14.07.2026
Как автоматизировать удаление старых комментариев в WordPress
11.03.2026
Как добавить автоматическое удаление старых черновиков в WordPress
01.04.2026
Оптимизация базы данных WordPress: практические советы и методы
01.12.2025
Как найти и убрать дубли страниц в WordPress без потери индексации
15.08.2026