Как использовать хуки в 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 по условиям
26.04.2026
Как создать динамический PDF-файл в WordPress с помощью PHP
05.01.2026
Как удалить или спрятать страницы в WordPress без удаления
11.01.2026
Как использовать мета-записи для контекстного контента в WordPress
07.12.2025
WooCommerce: автоматическое отключение отзывов по условиям
25.06.2026