В стандартном функционале WordPress заголовок записи (title) формируется из поля заголовка в админке и отображается на сайте, а также используется в метатегах и в заголовках страниц. Иногда возникает задача динамически менять заголовок в зависимости от контекста — например, добавлять префиксы, суффиксы, менять заголовок для определённых категорий или пользовательских условий.
Почему важно менять заголовок динамически и как это помогает SEO и UX
Динамическое изменение заголовка полезно, если вы хотите улучшить восприятие страниц пользователями или поисковыми системами. Например, для интернет-магазина можно добавить к названию продукта слово «Акция» или «Скидка», если товар участвует в распродаже. Это сделает заголовок более привлекательным и релевантным.
Кроме того, динамический заголовок позволяет управлять метаинформацией без необходимости создавать множество дублирующего контента в админке.
При этом важно не нарушать структуру заголовков и не использовать динамические изменения, которые могут сбить поисковые системы или пользователей с толку.
Как работает автозаголовок WordPress — разбор фильтра wppremium_filter_wp_title
Для изменения заголовка в WordPress существует несколько способов, но самый универсальный — использование фильтра pre_get_document_title или wp_title (для старых тем). В современных темах рекомендуется работать с pre_get_document_title, так как он влияет на тег <title> в <head>.
Давайте создадим функцию wppremium_change_dynamic_title, которая будет изменять заголовок в зависимости от условий.
function wppremium_change_dynamic_title($title) {
if (is_singular('product')) { // пример для кастомного типа записи 'product'
$discount = get_post_meta(get_the_ID(), '_product_discount', true);
if ($discount) {
$title = 'Акция: ' . $title . ' - Скидка ' . $discount . '%';
}
} elseif (is_category('news')) {
$title .= ' | Последние новости сайта';
}
return $title;
}
add_filter('pre_get_document_title', 'wppremium_change_dynamic_title');В этом примере, если это страница продукта с мета-ключом скидки, к заголовку добавляется слово «Акция» и информация о скидке. Для категории «news» добавляется суффикс «Последние новости сайта».
Примеры плагинов для работы с динамическими заголовками и SEO
Если не хочется писать код, можно использовать плагины, которые позволяют менять заголовки динамически или добавлять шаблоны:
- Yoast SEO — позволяет создавать шаблоны заголовков для разных типов записей и категорий;
- All in One SEO Pack — аналогично, с настройками для динамических заголовков;
- Clearfy Pro — упрощает управление мета-тегами и заголовками, оптимизирует вывод;
- WPPremium Expert Review — если у вас сайт с обзорами, можно автоматически добавлять рейтинг в заголовок;
- ABC Pagination — помогает корректно формировать заголовки для пагинации.
Эти инструменты облегчат задачу, но для уникальных условий всё равно понадобится добавить кастомный код.
Как добавить динамический заголовок для пагинации и фильтров
Если на сайте есть пагинация или фильтры, важно корректно менять заголовок, чтобы не было дублей и для SEO это было полезно.
Пример, как добавить номер страницы в заголовок:
function wppremium_add_pagination_to_title($title) {
if (is_paged()) {
$page = get_query_var('paged') ? get_query_var('paged') : 1;
$title .= ' - Страница ' . $page;
}
return $title;
}
add_filter('pre_get_document_title', 'wppremium_add_pagination_to_title');Таким образом, заголовок для второй страницы категории будет выглядеть: «Новости | Последние новости сайта - Страница 2».
Динамические заголовки при работе с AJAX фильтрами
Если на сайте есть AJAX-фильтры (например, по цене или цвету), заголовок можно менять с помощью JavaScript и history API, чтобы отражать выбранные параметры, не перезагружая страницу.
Пример на JS:
document.addEventListener('DOMContentLoaded', function() {
const filters = document.querySelectorAll('.filter-input');
filters.forEach(input => {
input.addEventListener('change', function() {
let selectedFilters = [];
filters.forEach(f => {
if (f.checked) selectedFilters.push(f.value);
});
let newTitle = 'Каталог';
if (selectedFilters.length) {
newTitle += ' - ' + selectedFilters.join(', ');
}
document.title = newTitle;
history.replaceState(null, newTitle, window.location.href);
});
});
});Это улучшит UX и SEO, показывая актуальный заголовок в зависимости от выбранных фильтров.
Как интегрировать динамические заголовки с темой Reboot от WPShop
Тема Reboot полностью поддерживает стандартные фильтры WordPress для заголовков, поэтому описанные выше функции работают без доработок.
Для расширения функционала можно использовать хуки темы, например, добавлять пользовательские мета-поля к заголовкам обзоров с Expert Review.
Пример кода для добавления рейтинга из Expert Review к заголовку записи:
function wppremium_add_review_rating_to_title($title) {
if (is_singular('post') && function_exists('expert_review_get_rating')) {
$rating = expert_review_get_rating(get_the_ID());
if ($rating) {
$title .= ' - Рейтинг: ' . $rating . '/5';
}
}
return $title;
}
add_filter('pre_get_document_title', 'wppremium_add_review_rating_to_title');Выводы и рекомендации по динамическим заголовкам
Динамическое изменение заголовков WordPress — мощный инструмент для повышения удобства пользователей и улучшения SEO. Важно:
- Использовать современные фильтры
pre_get_document_titleдля изменения тега <title>. - Корректно обрабатывать пагинацию и фильтры, чтобы избежать дублирования контента.
- Использовать плагины, если нужно гибко управлять заголовками без кода.
- Проверять, что динамические заголовки не нарушают логики и не вводят пользователей в заблуждение.
Для более сложных задач на сайте WP Premium можно комбинировать плагины Clearfy Pro, Expert Review и тему Reboot, чтобы создавать максимально адаптивные и информативные заголовки.
Подробнее о плагинах и темах WPShop смотрите на официальном сайте WPShop.