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