В WordPress заголовок страницы (<title>) играет ключевую роль для SEO и пользовательского опыта. Часто возникает необходимость динамически менять заголовок в зависимости от контекста: типа страницы, категории, пользователя и других условий. В этой статье мы подробно разберём, как программно управлять заголовками страниц в WordPress, используя хуки, условные теги и фильтры.
Почему важно динамически менять заголовок страницы в WordPress
Статический заголовок не всегда отражает содержание конкретной страницы. Динамический заголовок позволяет улучшить:
- SEO — поисковые системы лучше индексируют страницы с уникальными, релевантными заголовками;
- Пользовательский опыт — посетитель сразу понимает, о чём страница;
- Универсальность темы — один шаблон может обслуживать разные типы контента с разными заголовками.
Рассмотрим несколько способов динамического изменения заголовков в WordPress на примерах.
Использование фильтра wprus_filter_wp_title для динамического заголовка (до WordPress 4.4)
До версии WordPress 4.4, заголовок страницы формировался с помощью фильтра wp_title. Мы создадим собственную функцию wprus_filter_wp_title, которая изменит заголовок в зависимости от типа страницы.
function wprus_filter_wp_title($title, $sep) {
if (is_home() || is_front_page()) {
$title = 'Главная страница ' . get_bloginfo('name');
} elseif (is_category()) {
$title = 'Категория: ' . single_cat_title('', false) . ' ' . $sep . ' ' . get_bloginfo('name');
} elseif (is_single()) {
$title = get_the_title() . ' ' . $sep . ' ' . get_bloginfo('name');
}
return $title;
}
add_filter('wp_title', 'wprus_filter_wp_title', 10, 2);Этот пример показывает базовое переключение заголовка для главной, категории и одиночного поста. Однако современный WordPress использует функцию add_theme_support('title-tag') и хуки pre_get_document_title и document_title_parts.
Динамическое изменение заголовка с помощью фильтра document_title_parts (рекомендуемый способ)
Начиная с WordPress 4.4, рекомендуется работать с фильтром document_title_parts, который передаёт массив с частями заголовка. Мы создадим функцию wprus_filter_document_title_parts, чтобы динамически менять заголовок.
function wprus_filter_document_title_parts($title) {
if (is_singular('product')) {
// Например, для кастомного типа записи 'product'
$custom_field = get_post_meta(get_the_ID(), 'wprus_custom_title', true);
if ($custom_field) {
$title['title'] = $custom_field; // Заменяем заголовок на значение метаполя
}
} elseif (is_category()) {
$title['title'] = 'Товары категории: ' . single_cat_title('', false);
} elseif (is_front_page()) {
$title['title'] = 'Добро пожаловать на ' . get_bloginfo('name');
}
return $title;
}
add_filter('document_title_parts', 'wprus_filter_document_title_parts');Такой подход гибкий и позволяет менять как основную часть заголовка, так и дополнительно управлять другими частями, например, описанием сайта.
Использование условных тегов для тонкой настройки заголовков
Условные теги WordPress — мощный инструмент для определения контекста страницы. Вот список часто используемых тегов в настройке заголовков:
is_home(),is_front_page()— главная страница;is_single()— одиночная запись;is_page()— статичная страница;is_category(),is_tag()— категории и метки;is_post_type_archive()— архив кастомного типа записи;is_search()— страница поиска;is_404()— страница ошибки 404.
Используя эти теги, можно создавать сложные правила изменения заголовков для любого типа страниц.
Пример: динамический заголовок для WooCommerce товаров
Если на вашем сайте установлен WooCommerce, можно изменить заголовок страницы товара и каталога следующим образом:
function wprus_filter_woocommerce_title_parts($title) {
if (is_product()) {
$product = wc_get_product(get_the_ID());
$title['title'] = $product->get_name() . ' - Лучшие цены в магазине ' . get_bloginfo('name');
} elseif (is_shop()) {
$title['title'] = 'Каталог товаров ' . get_bloginfo('name');
}
return $title;
}
add_filter('document_title_parts', 'wprus_filter_woocommerce_title_parts');Такой заголовок поможет выделить ваши товары в поиске и привлечь внимание пользователей.
Как проверить изменения заголовка и отладить
Чтобы увидеть результат, откройте исходный код страницы в браузере и найдите тег <title>. Если изменения не применяются, проверьте:
- Поддерживает ли ваша тема
title-tag(в файлеfunctions.phpдолжно бытьadd_theme_support('title-tag');); - Не переопределяется ли заголовок другими плагинами или функциями;
- Правильно ли подключены фильтры и нет ли ошибок в коде.
Полезные плагины для управления заголовками в WordPress
Если не хотите писать код, можно использовать плагины с расширенными настройками заголовков:
- Yoast SEO — позволяет задавать шаблоны заголовков для разных типов страниц;
- All in One SEO Pack — альтернативный SEO плагин с гибкой настройкой;
- Clearfy Pro — оптимизация и управление заголовками плюс множество полезных функций.
Эти решения облегчают работу и позволяют быстро настроить динамические заголовки без программирования.