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

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

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

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

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

Основные фильтры для изменения заголовков

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

  • the_title — для изменения заголовков постов и страниц в контенте;
  • wp_title (устарел, но встречается) — для изменения тега <title> в шапке;
  • pre_get_document_title — для изменения заголовка документа (рекомендуется с WP 4.4+);
  • document_title_parts — фильтр для изменения частей заголовка страницы, который выводится в <title>.

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

Предположим, что вы хотите добавить к заголовкам всех постов на сайте суффикс «– полезная статья». Для этого подключим фильтр the_title в функции темы или в собственном плагине.

function wprus_append_suffix_to_title($title, $id = null) {
    if (is_singular('post') && in_the_loop() && !is_admin()) {
        $title .= ' – полезная статья';
    }
    return $title;
}
add_filter('the_title', 'wprus_append_suffix_to_title', 10, 2);

В этом коде мы проверяем, что заголовок вызывается в контексте отдельного поста (is_singular('post')), в основном цикле (in_the_loop()) и не в административной панели. После этого к заголовку добавляется суффикс.

Разбор кода и рекомендации

Обратите внимание, что мы передаем в фильтр два параметра — сам заголовок и ID текущего поста. Это позволяет при необходимости использовать данные поста для более сложных условий.

Использование is_admin() гарантирует, что изменения не повлияют на админку, что особенно важно для корректного отображения и управления.

Изменение тега <title> страницы через document_title_parts

Для SEO и отображения в браузере важен именно тег <title>. Современный и рекомендуемый способ его изменения — фильтр document_title_parts. Вот пример, как добавить название сайта в конец заголовка на страницах записей:

function wprus_modify_document_title_parts($title_parts) {
    if (is_singular('post')) {
        $title_parts['title'] .= ' | WPRus.ru';
    }
    return $title_parts;
}
add_filter('document_title_parts', 'wprus_modify_document_title_parts');

Здесь мы меняем часть массива $title_parts, которая отвечает за основную часть заголовка (ключ title), добавляя к ней название сайта.

Преимущества подхода

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

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

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

function wprus_custom_title_prefix($title) {
    if (is_singular('post')) {
        $title = 'Статья: ' . $title;
    } elseif (is_page()) {
        $title = 'Страница: ' . $title;
    }
    return $title;
}
add_filter('the_title', 'wprus_custom_title_prefix');

Такой подход позволяет сделать заголовки более информативными и понятными для посетителей.

Развиваем тему: интеграция с плагинами

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

Как отлаживать изменения заголовков с помощью хуков

Для проверки работы фильтров рекомендуется использовать функцию error_log или специальные плагины для отладки, например, Debug Bar. Вот простой пример для логирования заголовков:

function wprus_log_title($title) {
    error_log('Заголовок: ' . $title);
    return $title;
}
add_filter('the_title', 'wprus_log_title');

Это поможет увидеть, в какой момент и с каким содержимым вызывается фильтр.

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

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

Выводы и рекомендации

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

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

Дополнительно рекомендую ознакомиться с плагином Clearfy Pro, который предлагает удобный интерфейс для управления SEO-настройками, включая заголовки страниц.

Как изменить вывод метаданных в выставке постов WordPress: практические примеры
15.03.2026
Как добавить кастомный REST API endpoint в WordPress с примером кода
07.03.2026
Как удалить битые ссылки в WordPress: автоматические и ручные методы
05.04.2026
Как избежать проблем с перемещением медиаменеджера в WordPress
04.03.2026
Как удалить загруженные файлы из медиатеки WordPress по ссылке
06.12.2025
×

Время не ждет!

Скидки на
WordPress!

-20%
на топовые плагины

Не упусти шанс ⋙