В современных проектах на WordPress часто возникает необходимость динамически менять meta title страниц в зависимости от условий, контекста или пользовательских данных. Это помогает улучшить SEO и пользовательский опыт. В этой статье мы подробно рассмотрим, как с помощью хука WordPress изменить meta title, приводя практические примеры и код.
Почему важно менять meta title динамически
Meta title — это один из ключевых SEO-элементов, который определяет заголовок страницы в поисковой выдаче и вкладке браузера. Статичный заголовок не всегда отражает содержимое страницы, особенно если сайт использует кастомные типы записей, фильтры или динамический контент.
Динамическое изменение meta title позволяет:
- Учитывать параметры запроса или фильтры
- Улучшить уникальность заголовков для SEO
- Предоставить пользователю релевантный заголовок уже на этапе просмотра вкладки браузера
Без использования плагинов и с помощью стандартных хуков WordPress можно гибко управлять этим процессом.
Основной хук для изменения meta title — wp_title и document_title_parts
Ранее для вывода заголовка в WordPress использовался фильтр wp_title, однако начиная с WordPress 4.4, рекомендуется применять фильтр document_title_parts, который возвращает массив с частями заголовка. Он более гибкий и позволяет менять заголовок на любом участке сайта.
Для совместимости рассмотрим оба варианта, но рекомендуем использовать document_title_parts.
Фильтр document_title_parts
Вот пример функции, которая меняет meta title для определённого таксономического архива:
function wpbook_document_title_parts( $title_parts ) {
if ( is_tax( 'category', 'novosti' ) ) {
$title_parts['title'] = 'Новости компании — последние обновления';
}
return $title_parts;
}
add_filter( 'document_title_parts', 'wpbook_document_title_parts' );В этом примере, если пользователь заходит на архив таксономии с категорией novosti, заголовок страницы изменится на «Новости компании — последние обновления».
Фильтр wp_title (устаревший)
Если тема не поддерживает document_title_parts, можно использовать:
function wpbook_wp_title( $title, $sep ) {
if ( is_front_page() ) {
$title = 'Главная страница — мой сайт';
}
return $title;
}
add_filter( 'wp_title', 'wpbook_wp_title', 10, 2 );Но лучше переходить на современный метод через document_title_parts.
Динамическое изменение meta title в зависимости от пользовательских данных
Иногда требуется менять заголовок в зависимости от текущего пользователя, его роли или прочих параметров. Рассмотрим пример, когда заголовок меняется для авторизованных пользователей с ролью 'subscriber'.
function wpbook_dynamic_title_by_user( $title_parts ) {
if ( is_singular() && is_user_logged_in() ) {
$user = wp_get_current_user();
if ( in_array( 'subscriber', (array) $user->roles ) ) {
$title_parts['title'] .= ' — Добро пожаловать, ' . esc_html( $user->display_name );
}
}
return $title_parts;
}
add_filter( 'document_title_parts', 'wpbook_dynamic_title_by_user' );Таким образом, подписчики увидят свой никнейм в заголовке страниц записей.
Использование плагина Clearfy Pro для управления SEO-заголовками
Если вы предпочитаете использовать готовые решения, плагин Clearfy Pro предлагает расширенные возможности для настройки meta title без кода. В плагине есть модуль SEO, позволяющий задавать шаблоны заголовков для любых типов страниц, а также условные правила.
Однако, если нужен более тонкий контроль или специфические сценарии, лучше использовать хуки, как показано выше.
Советы по отладке и проверке динамического meta title
После добавления кода обязательно проверьте работу на разных страницах сайта. Для этого:
- Откройте исходный код страницы (Ctrl+U) и найдите тег
<title>. - Используйте инструменты разработчика в браузере.
- Проверьте кэширование: если используется кеширующий плагин, очистите кеш.
- Проверьте работу на разных устройствах и с разными пользователями.
Если заголовок не меняется, убедитесь, что тема поддерживает document_title_parts (в functions.php должен быть вызов add_theme_support( 'title-tag' )).
Заключение
Динамическое изменение meta title в WordPress — мощный инструмент для улучшения SEO и удобства пользователей. Используя хук document_title_parts, вы можете гибко настраивать заголовки страниц под любые задачи. Если же предпочитаете готовые решения, обратите внимание на плагин Clearfy Pro.