Как использовать хуки в WordPress для разработки тем

В разработке тем для WordPress хуки — это незаменимый инструмент, который позволяет изменить поведение сайта без прямого редактирования ядра или плагинов. Хуки бывают двух типов: actions (действия) и filters (фильтры). В этой статье мы подробно рассмотрим, как использовать хуки для создания эффективных и гибких тем, а также приведем конкретные примеры кода.

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

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

Actions — это хуки, к которым привязываются функции, выполняющие определённые действия в нужный момент. Например, вывод дополнительного контента, подключение скриптов и стилей, создание элементов интерфейса.

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

Разница между actions и filters

Главное отличие в том, что actions выполняют код без возврата значения, а filters принимают данные, изменяют их и возвращают обратно.

Пример: action — добавить скрипт на страницу, filter — изменить содержимое записи перед выводом.

Как использовать actions в теме WordPress

Добавлять действия в тему очень просто — используется функция add_action(). Рассмотрим пример, когда нужно добавить уведомление в конце каждой записи.

function wp_theme_ru_add_post_notice() {
    echo '<p style="color: red; font-weight: bold;">Внимание! Эта запись отредактирована.</p>';
}
add_action('the_content', 'wp_theme_ru_add_post_notice');

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

Например, добавим кастомный скрипт в футер:

function wp_theme_ru_custom_footer_script() {
    echo '<script>console.log("Скрипт из темы wp-theme.ru");</script>';
}
add_action('wp_footer', 'wp_theme_ru_custom_footer_script');

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

Использование filters для изменения вывода темы

Фильтры позволяют модифицировать данные перед их выводом. Например, можно изменить заголовок записи, добавив к нему префикс.

function wp_theme_ru_filter_title($title) {
    if (is_single()) {
        $title = 'Статья: ' . $title;
    }
    return $title;
}
add_filter('the_title', 'wp_theme_ru_filter_title');

Важно всегда возвращать изменённое или исходное значение из функции фильтра.

Другой пример — изменение excerpt (анонса записи), чтобы добавить ссылку «Читать далее».

function wp_theme_ru_custom_excerpt_more($more) {
    return '... <a href="' . get_permalink() . '">Читать далее</a>';
}
add_filter('excerpt_more', 'wp_theme_ru_custom_excerpt_more');

Практические советы по работе с хуками

  • Используйте префиксы в названиях своих функций, чтобы избежать конфликтов (например, wp_theme_ru_).
  • Всегда проверяйте, к какому типу хука вы привязываетесь — action или filter.
  • Для сложной логики лучше разделять обработчики на несколько функций.
  • Используйте приоритет и количество принимаемых аргументов в add_action и add_filter, если нужно.

Примеры продвинутых кейсов с хуками в теме

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

Иногда нужно добавить CSS класс к тегу <body> в зависимости от условий. Для этого есть фильтр body_class.

function wp_theme_ru_add_body_class($classes) {
    if (is_single()) {
        $classes[] = 'single-post-theme-wp';
    }
    return $classes;
}
add_filter('body_class', 'wp_theme_ru_add_body_class');

Это позволяет гибко стилизовать разные страницы.

Перехват и изменение запроса WP_Query

Фильтр pre_get_posts позволяет изменить параметры основного запроса на странице, например, чтобы вывести больше записей на главной.

function wp_theme_ru_modify_main_query($query) {
    if (!is_admin() && $query->is_main_query() && is_home()) {
        $query->set('posts_per_page', 10);
    }
}
add_action('pre_get_posts', 'wp_theme_ru_modify_main_query');

Здесь мы используем action, так как pre_get_posts — именно action-хук.

Как найти нужные хуки для вашей темы

Для эффективного использования хуков важно уметь их искать. Вот несколько способов:

  • Официальная документация WordPress — https://developer.wordpress.org/reference/hooks/
  • Используйте плагины, например, Query Monitor — показывает хук, который вызывается на странице.
  • Читайте исходный код используемых тем и плагинов.
  • Обратитесь к справочникам и блогам разработчиков.

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

Хотя хуки — это часть ядра WordPress, есть плагины, которые помогут вам управлять ими и отлаживать:

  • Code Snippets — позволяет добавлять собственные функции и хуки без редактирования functions.php.
  • Hookr.io — онлайн-база данных хуков с описаниями.
  • Query Monitor — отладка хуков и запросов.

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

Хуки — главный инструмент гибкой настройки тем WordPress. Правильное использование actions и filters позволяет создавать мощные и расширяемые темы, не нарушая стандартов и не ломая обновления.

Всегда тестируйте добавленные функции и используйте префиксы для безопасности. Практикуйтесь в написании хуков — и ваша тема станет удобной и функциональной.

Как добавить собственный тип записей в WordPress
13.11.2025
Как добавить динамический вывод атрибутов продуктов WooCommerce в тему WordPress
19.01.2026
Как сделать автоматическое обновление темы WordPress без плагина
17.02.2026
Как добавить поддержку WebP в тему WordPress
09.02.2026
Как создать динамический слайдер в WordPress теме
02.02.2026