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

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

Иногда стандартный заголовок страницы в WordPress не соответствует требованиям SEO или дизайна. Например, тема выводит заголовок, который нужно дополнить, изменить или заменить динамически. Редактировать шаблоны темы неудобно или невозможно (например, при использовании дочерней темы или ограниченного доступа). В таких случаях эффективным решением является использование фильтров WordPress для изменения заголовков на лету.

Какие фильтры отвечают за заголовок страницы

Основной фильтр, управляющий заголовками в WordPress — это the_title. Он применяется при выводе заголовков записей и страниц. Для изменения заголовка в <title> тега (в шапке сайта) используют фильтр pre_get_document_title или wp_title для старых тем.

Отличия между the_title и pre_get_document_title

  • the_title — меняет заголовок записи или страницы в контенте (например, в <h1> или списках).
  • pre_get_document_title — меняет заголовок в <title> теге браузера.

Пошаговое решение: изменить заголовок страницы на лету с помощью фильтра

Рассмотрим пример, как заменить заголовок записи с ID 42 на кастомный текст, добавив к нему текущую дату.

function custom_change_post_title($title, $id = null) {
    if (is_admin()) {
        return $title; // не изменяем в админке
    }
    if ($id === 42) {
        $date = date('d.m.Y');
        $title = 'Специальный заголовок от ' . $date;
    }
    return $title;
}
add_filter('the_title', 'custom_change_post_title', 10, 2);

Обратите внимание, что фильтр the_title принимает 2 параметра: сам заголовок и ID записи. Важно указывать 2 параметра в add_filter, чтобы получить ID.

Изменение заголовка в теге <title>

function custom_document_title($title) {
    if (is_singular('post') && get_the_ID() === 42) {
        $title = 'Кастомный заголовок в <title> для поста 42';
    }
    return $title;
}
add_filter('pre_get_document_title', 'custom_document_title');

Как проверить, что изменения применились

  1. Откройте страницу записи с ID 42 на сайте.
  2. Проверьте заголовок в контенте (обычно в <h1> или другом элементе) — он должен измениться на «Специальный заголовок от …».
  3. Посмотрите исходный код страницы, найдите тег <title> — там должен быть кастомный заголовок из фильтра pre_get_document_title.
  4. Убедитесь, что в админке заголовок не изменился (фильтр обрабатывает только фронтенд).

Частые ошибки и их исправление

  • Не работает фильтр the_title: проверьте, передаёте ли второй параметр в функцию и указали ли 2 параметра в add_filter.
  • Изменения влияют на админку: добавьте проверку if (is_admin()) return $title; в начале функции.
  • Заголовок в <title> не меняется: проверьте, использует ли тема стандартную функцию wp_head(). Если тема старая, возможно нужна замена wp_title.

Практические советы по безопасности и производительности

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

Сравнение способов изменения заголовков в WordPress

МетодГде меняетПростотаОграничения
Фильтр the_titleЗаголовок записи на страницеВысокаяНе меняет <title> браузера
Фильтр pre_get_document_titleТег <title> в шапкеСредняяНе меняет заголовок в контенте
Редактирование шаблоновВезде, где вызывается заголовокСложнееЗависит от темы, требует поддержки
WooCommerce: автоматическое удаление товаров из корзины при отсутствии на складе
26.06.2026
WooCommerce: автоматическое удаление заказов по статусу и времени
19.06.2026
WooCommerce: как отключить автоматическое обновление корзины при изменении товаров
22.06.2026
Как создать динамические фильтры для таксономий в WordPress с примерами кода
27.03.2026
WooCommerce не обновляет стоимость в корзине: как исправить
19.04.2026