В WordPress заголовки страниц играют ключевую роль не только для пользователей, но и для SEO. Иногда возникает задача динамически менять заголовки страниц в зависимости от условий — типа контента, параметров URL или действий пользователя. Для этого удобно использовать хуки (actions и filters), которые позволяют вмешиваться в процесс формирования заголовков без изменения ядра WordPress или темы.
Почему важно динамически менять заголовки страниц в WordPress
Стандартные заголовки страниц зачастую статичны и не отражают текущий контекст. Например, для архивной страницы категорий хочется добавить описание категории в заголовок, а для страницы с параметрами фильтра — учесть выбранные фильтры. Это помогает:
- Улучшить поведенческие факторы — пользователь видит актуальный заголовок.
- Повысить релевантность для поисковых систем — уникальные заголовки для каждой страницы.
- Сделать сайт более интерактивным и адаптивным к действиям пользователя.
Далее рассмотрим, как используя фильтры WordPress, динамически менять заголовки в разных ситуациях.
Использование фильтра wp-team_filter_wp_title для динамического изменения заголовков
В WordPress есть фильтр wp_title, который используют для изменения тега <title> в заголовке страницы. Однако в современных темах чаще применяется функция document_title_parts. Мы создадим универсальную функцию с префиксом wpteam_ для примера.
Пример функции для изменения заголовка с учетом категории и параметров URL:
function wpteam_dynamic_page_title($title_parts) {
// Добавим название категории на страницах архивов
if (is_category()) {
$category = get_queried_object();
$title_parts['title'] = 'Статьи в категории: ' . $category->name;
}
// Добавим параметр ?filter=xyz в заголовок, если он есть
if (isset($_GET['filter'])) {
$filter = sanitize_text_field($_GET['filter']);
$title_parts['title'] .= ' - Фильтр: ' . $filter;
}
return $title_parts;
}
add_filter('document_title_parts', 'wpteam_dynamic_page_title');Этот код проверяет, если пользователь на странице категории, то заголовок меняется на «Статьи в категории: Имя категории». Если же в URL есть параметр filter, он добавляется к заголовку.
Динамическое изменение заголовков для кастомных типов записей и таксономий
Если на сайте используются собственные типы записей (Custom Post Types) и таксономии, можно расширить функцию для них.
function wpteam_dynamic_title_for_custom_post_types($title_parts) {
if (is_singular('wp_team_project')) {
$project_title = get_the_title();
$title_parts['title'] = 'Проект: ' . $project_title;
}
if (is_tax('wp_team_skill')) {
$term = get_queried_object();
$title_parts['title'] = 'Навыки: ' . $term->name;
}
return $title_parts;
}
add_filter('document_title_parts', 'wpteam_dynamic_title_for_custom_post_types', 20);В этом примере для типа записи wp_team_project заголовок будет начинаться с «Проект:», а для таксономии wp_team_skill — с «Навыки:». Такой подход дает гибкость и улучшает UX.
Использование плагинов для расширенного управления заголовками
Если хочется использовать готовые решения с визуальным интерфейсом и расширенными возможностями, рассмотрите плагины:
- Clearfy Pro — оптимизация SEO и настройка заголовков.
- JournalX — тема с гибкими настройками заголовков и SEO.
Эти инструменты позволяют задавать шаблоны заголовков для разных типов страниц без программирования.
Советы по безопасному и корректному применению фильтров заголовков
При работе с динамическими заголовками важно:
- Использовать функции очистки данных, например,
sanitize_text_fieldдля параметров из URL. - Не переопределять заголовок полностью, если в этом нет нужды — лучше дополнять.
- Тестировать изменения на разных страницах и устройствах.
Таким образом, динамическое изменение заголовков через хуки помогает сделать сайт адаптивным и SEO-дружественным.