Фильтр wp_title
использовался в WordPress до версии 4.4 для изменения заголовков страниц в HTML-документе. Он позволял разработчикам изменять содержимое тега <title>
, который отображается в браузере на вкладке. Однако начиная с WordPress 4.4, этот фильтр был заменён на более современный способ через функцию wp_title()
и тему, поддерживающую функцию add_theme_support( 'title-tag' )
.
Несмотря на это, фильтр wp_title
по-прежнему может использоваться в старых темах, которые не поддерживают новый подход. Давайте разберём, как работает фильтр, его примеры и как его можно адаптировать под современные версии WordPress.
Использование фильтра wp_title
Фильтр wp_title
позволяет вам контролировать содержимое тега <title>
в заголовке HTML-документа, изменяя стандартный вывод.
Пример базового использования:
add_filter( 'wp_title', 'custom_wp_title', 10, 2 );
/**
* Кастомизация заголовка страницы.
*
* @param string $title Текущий заголовок.
* @param string $sep Разделитель заголовка.
* @return string Изменённый заголовок.
*/
function custom_wp_title( $title, $sep ) {
// Изменяем заголовок только на главной странице
if ( is_home() || is_front_page() ) {
$title = 'Добро пожаловать на мой сайт ' . $sep . ' ' . get_bloginfo( 'name' );
}
return $title;
}
Параметры функции:
$title
— текущий заголовок страницы.$sep
— разделитель, который используется между частями заголовка (по умолчанию это символ «|»).
Как это работает?
- В этом примере мы проверяем, находимся ли мы на главной странице или странице блога с помощью функций
is_home()
иis_front_page()
. - Если условие выполняется, мы изменяем заголовок страницы, добавляя текст «Добро пожаловать на мой сайт».
- Для всех остальных страниц заголовок остаётся без изменений.
Использование wp_title
для других страниц
С помощью фильтра wp_title
можно кастомизировать заголовки и для других типов страниц: архива, страницы записи, категории и т.д.
Пример для страниц архивов:
add_filter( 'wp_title', 'custom_archive_title', 10, 2 );
function custom_archive_title( $title, $sep ) {
if ( is_category() ) {
$title = 'Категория: ' . single_cat_title( '', false ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
} elseif ( is_tag() ) {
$title = 'Метка: ' . single_tag_title( '', false ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
} elseif ( is_author() ) {
$title = 'Автор: ' . get_the_author() . ' ' . $sep . ' ' . get_bloginfo( 'name' );
}
return $title;
}
В этом примере фильтр изменяет заголовок в зависимости от типа архивной страницы: категории, метки или автора.
Обновленный подход: add_theme_support( 'title-tag' )
Начиная с WordPress 4.1, была введена поддержка функции add_theme_support( 'title-tag' )
, которая автоматически генерирует заголовок страницы, и использование фильтра wp_title
стало устаревшим.
Чтобы включить эту функцию, просто добавьте следующий код в файл вашей темы functions.php
:
add_theme_support( ‘title-tag’ );
Теперь WordPress самостоятельно будет генерировать заголовки для каждой страницы.
Фильтр pre_get_document_title
Вместо старого фильтра wp_title
, начиная с WordPress 4.4, вы можете использовать новый фильтр pre_get_document_title
для изменения заголовков страниц:
add_filter( 'pre_get_document_title', 'custom_document_title' );
function custom_document_title( $title ) {
if ( is_home() || is_front_page() ) {
$title = 'Добро пожаловать на мой сайт';
}
return $title;
}
тот фильтр позволяет более гибко управлять заголовками, особенно в темах, поддерживающих title-tag
.