wp_get_document_title()
Получает заголовок текущей страницы (документа), который принято выводить в html теге <title>.
Это замена для устаревшей функции wp_title().
Заметки по формату заголовка:
- В конце заголовка добавляется
— название сайта. - На главной странице вместо названия выводится
— описание сайта. Главная страница определяется так:is_home() && is_front_page(). - Для страниц пагинации в конце будет добавлен номер страницы:
– Страница 2.
Эта функция сработает в <head> части HTML автоматически, если у темы включена поддержка title-tag:
add_theme_support( 'title-tag' );
В этом случае в <head> будет добавлена такая конструкция:
<title><?php echo wp_get_document_title(); ?></title>
В современных темах WP вообще не нужно добавлять тег <title> в <head>, он будет добавлен автоматически, функцией _wp_render_title_tag(), которая сработает на хуке wp_head, который в свою очередь вызывается функцией wp_head().
Работу этой функции можно переопределить через хук pre_get_document_title:
$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
return $title;
}
См. пример 3.
Полезные фильтры:
- document_title_parts, чтобы изменить любую часть заголовка выводимого этой функцией.
- document_title, чтобы изменить итоговую строку заголовка.
Возвращает
Строку. Заголовок текущей страницы.
Использование
<title><?php echo wp_get_document_title(); ?></title>
Примеры
#1 Выведем свой заголовок, используя фильтр
Допустим нам нужно чтобы эта функцию вообще не работала и через нее мы хотим вывести свой заголовок, например "Моя страница", на странице с ID 20:
// На странице 20 будет выведен заголовок "Моя страница"
add_filter( 'pre_get_document_title', function(){
global $post;
if( $post->ID != 20 )
return ''; // не меняем ничего
return 'Моя страница';
} ); #2 Переопределяем функцию
Можно написать свою функцию и полностью заменить работу этой функции:
add_filter( 'pre_get_document_title', 'my_get_document_title' );
function my_get_document_title(){
// Генерируем динамический заголовок для каждой страницы.
// За основу можно взять код этой функции и поправить его под себя.
$title = 'Это динамически созданный заголовок';
return $title;
} #3 Удалим названия сайта в конце заголовка
Ко всем заголовкам на отдельных страницах is_singular() добавляется название сайта, через разделитель. Это не всегда хорошо, давайте поправим этот момент. Для этого используем фильтр: document_title_parts:
// Удалим названия сайта в конце заголовка
add_filter( 'document_title_parts', function( $parts ){
if( isset( $parts['site'] ) ){
unset( $parts['site'] );
}
return $parts;
} ); #4 Удалим описания сайта из заголовка главной страницы
На главной странице выводиться "Название сайта - описание сайта". Чтобы удалить описание и выводить только называние, используйте такой хук:
// удалим описание из заголовка для главной страницы
add_filter( 'document_title_parts', function( $title ){
if( isset( $title['tagline'] ) ){
unset( $title['tagline'] );
}
return $title;
} ); #5 Вывод TITLE заголовка страницы
Это замена для тега шаблона wp_title(). Используется в header.php для вывода заголовка любой страницы.
Это демонстрационный пример, на деле в WP этот код выполняется функцией _wp_render_title_tag(), которая в свою очередь зацеплена на хук wp_head. Т.е. код выполняется в HEAD части HTML и чтобы его включить, нужно включить поддержку темы title-tag.
<title><?php echo wp_get_document_title(); ?></title>
#6 Изменим разделитель между заголовком и названием сайта
По умолчанию функция добавляет в после заголовка название сайта через разделитель: ' - '. Разделитель можно изменить через фильтр:
add_filter( 'document_title_separator', function(){
return ' | ';
} ); #7 Демонстрация работы
Допустим мы находимся на странице "Контакты":
echo wp_get_document_title(); // выведет: Контакты - Название сайта
Заметки
- Global. int.
$pagePage number of a single post. - Global. int.
$pagedPage number of a list of posts.
Список изменений
| С версии 4.4.0 | Введена. |