wp_get_document_title() │ WP 4.4.0
Функция wp_get_document_title() возвращает заголовок документа для текущей страницы.
Использование
Эта функция работает вместе с другими функциями:
single_term_title()single_post_title()post_type_archive_title()
Время выполнения
- 1 раз — 0.00042 сек (быстро)
- 50000 раз — 15 сек (медленно)
Хуки от функции
pre_get_document_titledocument_title_separatordocument_title_partsdocument_title
Возврат
Возвращает строку — тег с заголовком документа.
Пример использования
Для вызова функции просто напишите:
wp_get_document_title();
Демонстрация работы
Предположим, мы находимся на странице «Контакты»:
echo wp_get_document_title();
// вывод: Контакты - Название сайта
Заголовок страницы
Эта функция заменяет шаблонный тег wp_title(). Она используется в файле header.php для отображения заголовка любой страницы.
Пример реализации в HTML:
Вывод заголовка, используя фильтр
Допустим, мы хотим, чтобы на странице с ID 20 отображался наш собственный заголовок, например "Моя страница":
// Заголовок "Моя страница" будет отображен на странице с ID 20
add_filter( 'pre_get_document_title', function(){
global $post;
if( $post->ID != 20 ){
return ''; // не изменяем ничего
}
return 'Моя страница';
} );
Переопределение функции
Вы можете написать свою собственную функцию и полностью заменить работу этой функции. Это можно сделать с помощью хука pre_get_document_title:
add_filter( 'pre_get_document_title', 'my_get_document_title' );
function my_get_document_title(){
// Генерируем динамический заголовок для каждой страницы.
$title = 'Это динамически сгенерированный заголовок';
return $title;
}
Изменение разделителя между заголовком и названием сайта
По умолчанию функция добавляет разделитель " - " после заголовка и перед названием сайта. Вы можете изменить этот разделитель через фильтр:
add_filter( 'document_title_separator', function(){
return ' | ';
} );
Удаление названия сайта в конце заголовка
На страницах с is_singular() к заголовкам добавляется название сайта, разделенное разделителем. Это не всегда нужно, и мы можем это исправить:
// Удалить название сайта в конце заголовка
add_filter( 'document_title_parts', function( $parts ){
if( isset( $parts['site'] ) ){
unset( $parts['site'] ); // убираем название сайта
}
return $parts;
} );
Удаление описания сайта из заголовка главной страницы
На главной странице отображается "Название сайта - описание сайта". Чтобы убрать описание и оставить только заголовок, используйте этот хук:
// убираем описание из заголовка для главной страницы
add_filter( 'document_title_parts', function( $title ){
if( isset( $title['tagline'] ) ){
unset( $title['tagline'] ); // убираем описание
}
return $title;
} );
Примечания
- Глобальная переменная
int $page— номер страницы одного поста. - Глобальная переменная
int $paged— номер страницы списка постов.
Изменения
- С версии 4.4.0 введена функция.
Код функции wp_get_document_title
function wp_get_document_title() {
$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
return $title;
}
global $page, $paged;
$title = array(
'title' => '',
);
if ( is_404() ) {
$title['title'] = __( 'Страница не найдена' );
} elseif ( is_search() ) {
$title['title'] = sprintf( __( 'Результаты поиска для “%s”' ), get_search_query() );
} elseif ( is_front_page() ) {
$title['title'] = get_bloginfo( 'name', 'display' );
} elseif ( is_post_type_archive() ) {
$title['title'] = post_type_archive_title( '', false );
} elseif ( is_tax() ) {
$title['title'] = single_term_title( '', false );
} elseif ( is_home() || is_singular() ) {
$title['title'] = single_post_title( '', false );
} elseif ( is_category() || is_tag() ) {
$title['title'] = single_term_title( '', false );
} elseif ( is_author() && get_queried_object() ) {
$author = get_queried_object();
$title['title'] = $author->display_name;
} elseif ( is_year() ) {
$title['title'] = get_the_date( _x( 'Y', 'формат даты для годовых архивов' ) );
} elseif ( is_month() ) {
$title['title'] = get_the_date( _x( 'F Y', 'формат даты для месячных архивов' ) );
} elseif ( is_day() ) {
$title['title'] = get_the_date();
}
if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
$title['page'] = sprintf( __( 'Страница %s' ), max( $paged, $page ) );
}
if ( is_front_page() ) {
$title['tagline'] = get_bloginfo( 'description', 'display' );
} else {
$title['site'] = get_bloginfo( 'name', 'display' );
}
$sep = apply_filters( 'document_title_separator', '-' );
$title = apply_filters( 'document_title_parts', $title );
$title = implode( " $sep ", array_filter( $title ) );
$title = apply_filters( 'document_title', $title );
return $title;
}
Эта функция генерирует заголовок для текущей страницы на основе различных условий. Вы можете настроить её под свои нужды, используя фильтры.