wp_get_document_title() – вывод тайтла страницы

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Когда-то давно, для того, чтобы вывести заголовок страницы (тут я имею ввиду то, что у нас находится между тегами <title>, мы производили различные махинации с функцией wp_title(), больше этого делать не нужно, так как wp_get_document_title() более правильная, универсальная и автоматизированная в этом отношении.

Существует два возможных способа использования этой функции.

Первый – вставляем между тегами <head> это:

<title><?php echo wp_get_document_title() ?></title>

Второй – используем функцию add_theme_support() в вашем файле functions.php и больше ничего делать не нужно – функция wp_get_document_title() сработает автоматически через функцию/хук wp_head(). В этому случае тегов <title>, прописаных в файлах темы быть не должно!

add_theme_support( 'title-tag' );

Как формируются заголовки:

Также при нахождении на страницах постраничной навигации is_paged() будет добавляться  – Страница {Номер страницы}.

Изменение разделителя заголовка «–» через хук

Функция имеет внутри себя несколько хуков, самой простой позволяет изменить знак разделения, использующийся в заголовке, например если вы вдруг захотите использовать запятую или «|», то можете поменять это следующим кодов в ваш functions.php:

add_filter( 'document_title_separator', function() {
	return '|';
});

Удаление / Изменение некоторых частей заголовков

Окей, вы наверное заметили, что {Название сайта} (ну заметили же?) добавляется в каждой из ситуаций, а что если вы не хотите, чтобы оно добавлялось? Тут нас спасает хук document_title_parts.

add_filter( 'document_title_parts', function( $title ) {
 
	// $title['title'] – первая часть заголовка
	// $title['page'] – существует при нахождении на 2 и далее странице постраничной навигации
	// $title['tagline'] – описание сайта во второй части заголовка после разделителя
	// $title['site'] – название сайта во второй части заголовка
 
	if( ! empty( $title['site'] ) ) {
		unset( $title['site'] );
	}
 
	return $title;
 
} );

Хочется отметить, что хук довольно умный, если мы удаляем вторую часть, то и разделитель тоже исчезнет! Ну и конечно же вы можете не только удалять какие-то определённые части заголовков, но и изменять их:

add_filter( 'document_title_parts', function( $title ) {
 
	if( ! empty( $title['site'] ) ) {
		$title['site'] = 'Версия для печати';
	}
 
	return $title;
 
} );

Создание собственных правил формирования произвольных заголовков

А это уже место для творчества различных SEO-плагинов, а именно – хук pre_get_document_title. Он работает таким образом, что если возвращает что-либо, а не пустой результат, то функция дальше не выполняется и лишь возвращает результат из хука. Как-то так.

В качестве примера давайте попробуем использовать этот хук для того, чтобы получать заголовок поста из произвольных полей, если они заданы, если же нет, то выводим значение по умолчанию.

add_filter( 'pre_get_document_title', function(){
 
	if( is_singular() && ( $title = get_post_meta( get_the_ID(), 'seo_title', true ) ) ) {
		return $title;
	}
 
	return '';
 
} );
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии