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

В WordPress заголовки страниц (title) играют ключевую роль как для SEO, так и для удобства пользователей. Часто возникает необходимость менять заголовок динамически в зависимости от контекста — например, подставлять название категории, дату, имя автора или другие данные. В этой статье разберем, как с помощью хуков WordPress можно гибко управлять заголовками страниц, не меняя напрямую шаблоны темы.

Что такое хуки и зачем они нужны для изменения заголовков

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

Основной фильтр для изменения заголовка страницы — pre_get_document_title и wp_title (устаревший, но еще встречается). Также важно учитывать функции темы, которые выводят заголовок, например, wp_title() или использование SEO-плагинов.

Фильтр pre_get_document_title для современных тем

Начиная с WordPress 4.4, для изменения заголовка страницы рекомендуется использовать фильтр pre_get_document_title. Он позволяет перехватить заголовок до его вывода и подставить свой текст.

Рассмотрим пример функции, которая динамически меняет заголовок на странице архива категории, добавляя количество записей:

function wpdo_filter_dynamic_title($title) {
    if (is_category()) {
        $category = get_queried_object();
        $count = $category->count;
        $title = $category->name . ' — ' . $count . ' записей';
    } elseif (is_home()) {
        $title = 'Блог — последние новости и статьи';
    }
    return $title;
}
add_filter('pre_get_document_title', 'wpdo_filter_dynamic_title');

В этом коде мы проверяем, если это страница категории, получаем её объект, название и количество записей, формируем новый заголовок. Для главной (блога) задаем свой фиксированный заголовок.

Поддержка SEO-плагинов

Если вы используете SEO-плагины, например Clearfy Pro, они могут управлять заголовками самостоятельно. В этом случае лучше использовать хуки, предоставляемые плагином, или отключить управление заголовками в настройках плагина.

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

В старых темах, где заголовок формируется функцией wp_title(), можно использовать фильтр wp_title, чтобы изменить вывод. Пример:

function wpdo_filter_wp_title($title, $sep) {
    if (is_single() && in_category('novosti')) {
        $title = 'Новость: ' . get_the_title() . ' ' . $sep . ' ' . get_bloginfo('name');
    }
    return $title;
}
add_filter('wp_title', 'wpdo_filter_wp_title', 10, 2);

Здесь мы проверяем, если это одиночная запись в категории «новости», добавляем префикс «Новость» к заголовку.

Динамические заголовки для пользовательских типов записей и таксономий

Для сайтов с кастомными типами записей и таксономиями часто нужно формировать уникальные заголовки. Используем пример для типа записи product и таксономии product_cat:

function wpdo_dynamic_title_custom_types($title) {
    if (is_singular('product')) {
        $title = get_the_title() . ' — купить в магазине';
    } elseif (is_tax('product_cat')) {
        $term = get_queried_object();
        $title = 'Категория товаров: ' . $term->name;
    }
    return $title;
}
add_filter('pre_get_document_title', 'wpdo_dynamic_title_custom_types');

Так вы можете подстроить заголовки под любые пользовательские объекты, улучшая SEO и удобство.

Обработка пагинации в заголовках

Если на странице есть пагинация (например, страница 2 категории), хорошо добавить номер страницы в заголовок. Это помогает поисковикам и пользователям ориентироваться.

function wpdo_add_pagination_to_title($title) {
    if (is_paged()) {
        $paged = get_query_var('paged') ? get_query_var('paged') : 1;
        $title .= ' — Страница ' . $paged;
    }
    return $title;
}
add_filter('pre_get_document_title', 'wpdo_add_pagination_to_title');

Советы по отладке и проверке заголовков

Когда вы меняете заголовки через хуки, важно проверить, что изменения применяются корректно:

  • Очистите кеш браузера и кеш сайта (если используете кеширующие плагины).
  • Проверьте исходный код страниц (Ctrl+U) и найдите тег <title>.
  • Используйте инструменты разработчика браузера и SEO-плагины для проверки мета-тегов.
  • Если изменения не видны, убедитесь, что другие плагины или тема не перекрывают ваши фильтры.

Заключение

Использование фильтров WordPress для динамического изменения заголовков страниц — мощный способ адаптировать сайт под задачи SEO и удобства пользователей без правки темы. С помощью фильтров pre_get_document_title и wp_title можно гибко менять заголовки для разных типов страниц, категорий, записей и кастомных типов.

Если хотите расширить возможности управления SEO, обратите внимание на плагины вроде Clearfy Pro, которые интегрируются с WordPress хуками и позволяют настроить заголовки без кода.

Как удалить Emoji из WordPress для ускорения сайта
11.03.2026
Как использовать AJAX в WordPress для динамического обновления контента
16.12.2025
Как динамически удалить стили и скрипты в WordPress для оптимизации загрузки
15.04.2026
Как добавить новое поле в форму регистрации WordPress с примером кода
03.12.2025
WooCommerce: отладка проблем с оплатой через Яндекс.Кассу после обновления
16.05.2026