Динамические заголовки – это мощный инструмент, который позволяет адаптировать заголовки страниц и записей в WordPress в зависимости от контекста, пользовательских данных или содержимого. Это может значительно повысить SEO, улучшить поведенческие факторы и сделать сайт более привлекательным для посетителей. В этой статье подробно разберём, как реализовать динамические заголовки в WordPress на практике, рассмотрим примеры кода и полезные плагины.
Почему важны динамические заголовки в WordPress
Стандартные заголовки, которые задаются в редакторе или шаблонах, не всегда максимально релевантны запросам пользователей. Например, если у вас интернет-магазин или каталог, где одни и те же страницы отличаются только параметрами, статичный заголовок не отражает эту разницу. Поисковые системы могут рассматривать такие страницы как дубликаты или недостаточно релевантные.
Динамические заголовки позволяют подстраивать текст в зависимости от категории, тега, пользовательского поля, даты или даже геолокации. Это улучшает индексацию, повышает кликабельность сниппетов и делает сайт удобнее.
Рассмотрим, как можно реализовать динамические заголовки без плагинов и с их помощью.
Использование фильтра wp_title для динамических заголовков
В классическом WordPress для изменения заголовка страницы используют фильтр wp_title. Однако с приходом темы с поддержкой title-tag более современный способ — фильтр pre_get_document_title. Вот пример, как сделать динамический заголовок, добавляющий к названию категории текущую дату:
function cyrtolat_dynamic_title( $title ) {
if ( is_category() ) {
$category = single_cat_title( '', false );
$date = date_i18n( 'd.m.Y' );
return $category . ' – новости на ' . $date;
}
return $title;
}
add_filter( 'pre_get_document_title', 'cyrtolat_dynamic_title' );
Этот код подключается к хуку WordPress и меняет заголовок страницы категории, добавляя к нему дату. Это простой пример, но его можно усложнять, подставляя данные из произвольных полей или параметров запроса.
Создание динамических заголовков на основе пользовательских полей
Очень часто нужно выводить в заголовке информацию из произвольных полей (Custom Fields). Допустим, у вас есть поле subtitle для записей, и вы хотите, чтобы заголовок страницы записи включал это значение.
Пример кода для темы с поддержкой title-tag:
function cyrtolat_dynamic_title_postmeta( $title ) {
if ( is_singular( 'post' ) ) {
global $post;
$subtitle = get_post_meta( $post->ID, 'subtitle', true );
if ( $subtitle ) {
$title = $title . ' – ' . $subtitle;
}
}
return $title;
}
add_filter( 'pre_get_document_title', 'cyrtolat_dynamic_title_postmeta' );
Так вы можете динамически расширять заголовок и делать его более информативным.
Использование плагинов для динамических заголовков
Если вы не хотите писать код, можно использовать плагины. Вот несколько полезных:
- Yoast SEO — имеет гибкие настройки шаблонов заголовков для различных типов страниц, категорий и записей. Позволяет вставлять переменные и условия.
- All in One SEO Pack — аналогично позволяет задавать шаблоны заголовков и описаний, включая пользовательские поля.
- WPGPT от WPShop — плагин с AI-генерацией контента, в том числе заголовков, что может помочь автоматизировать создание уникальных и релевантных заголовков.
Пример настройки в Yoast SEO: в разделе «Внешний вид поиска» можно задать шаблон для заголовков записей, например, %%title%% – %%cf_subtitle%%, где %%cf_subtitle%% — это пользовательское поле subtitle.
Динамические заголовки для страниц с фильтрами и параметрами URL
Если на сайте есть страницы с фильтрами, например, каталог товаров с параметрами (цвет, цена, размер), стоит сделать заголовки, отражающие выбранные параметры. Это улучшит SEO и пользовательский опыт.
Пример динамического заголовка с учётом GET-параметров:
function cyrtolat_dynamic_title_filters( $title ) {
if ( is_post_type_archive( 'product' ) ) {
$filters = [];
if ( isset( $_GET['color'] ) ) {
$filters[] = 'Цвет: ' . sanitize_text_field( $_GET['color'] );
}
if ( isset( $_GET['size'] ) ) {
$filters[] = 'Размер: ' . sanitize_text_field( $_GET['size'] );
}
if ( $filters ) {
$title .= ' – Фильтры: ' . implode( ', ', $filters );
}
}
return $title;
}
add_filter( 'pre_get_document_title', 'cyrtolat_dynamic_title_filters' );
Такой подход особенно полезен для интернет-магазинов или каталогов с большим количеством параметров.
Оптимизация и кэширование динамических заголовков
При использовании динамических заголовков важно помнить о производительности. Если заголовки генерируются с учётом сложных запросов к базе или внешних API, стоит кешировать результат.
Для кеширования можно использовать Transients API WordPress. Пример:
function cyrtolat_dynamic_title_with_cache( $title ) {
$cached_title = get_transient( 'cyrtolat_dynamic_title' );
if ( $cached_title !== false ) {
return $cached_title;
}
// Сложная логика генерации заголовка
$new_title = $title . ' – сгенерировано динамически';
set_transient( 'cyrtolat_dynamic_title', $new_title, 3600 ); // Кэш на час
return $new_title;
}
add_filter( 'pre_get_document_title', 'cyrtolat_dynamic_title_with_cache' );
Это снижает нагрузку на сервер и ускоряет загрузку страниц.
Как интегрировать динамические заголовки с темами и плагинами WPShop
Если вы используете темы WPShop, например, Reboot или JournalX, динамические заголовки легко интегрируются с их шаблонами, поскольку они поддерживают стандартные хуки WordPress для заголовков.
Также можно использовать плагин WPRemark для расширенного управления SEO-заголовками и описаниями, который поддерживает динамические шаблоны и пользовательские поля.
Заключительные рекомендации по созданию динамических заголовков
При работе с динамическими заголовками важно придерживаться нескольких правил:
- Избегайте слишком длинных заголовков — максимум 60-70 символов для корректного отображения в поиске.
- Используйте релевантные ключевые слова, но не злоупотребляйте ими.
- Тестируйте заголовки на разных страницах, чтобы убедиться в корректности и уместности.
- Комбинируйте динамические данные с фиксированными элементами для сохранения узнаваемости бренда.
Динамические заголовки — это отличный способ сделать ваш WordPress-сайт более современным и ориентированным на пользователя и поисковые системы.