Когда-то давно, для того, чтобы вывести заголовок страницы (тут я имею ввиду то, что у нас находится между тегами <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_front_page(),
главная страница,{Название сайта} – {Описание сайта}
- is_404(),
страница ошибки 404,Страница не найдена – {Название сайта}
- is_search(), страница результатов поиска,
Результаты поиска «{Поисковая фраза}» – {Название сайта}
- is_post_type_archive(),
архивы типа записей,{Множественное число названия CPT} – {Название сайта}
- is_tax(), is_category(), is_tag(),
архивы любых таксономий,{Заголовок элемента таксономии} – {Название сайта}
- is_home() ИЛИ is_singular(),
страница блога не на главной, либо страница записи/страницы{Заголовок страницы} – {Название сайта}
- is_author()
страница архива автора{Отображаемое имя автора} – {Название сайта}
- is_year()
страница архива по годам{Год} – {Название сайта}
- is_month()
страница архива по месяцам{Месяц и год} – {Название сайта}
- is_day()
страница архива по дням{Тупо дата} – {Название сайта}
Также при нахождении на страницах постраничной навигации 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 ''; } );
- Используйте is_singular(), если хотите, чтобы код срабатывал для записей, страниц и любых произвольных типов постов, is_single() – если вам это нужно только для записей, is_page() – только для страниц
- Можете также почитать и про функцию get_post_meta().
Источник: misha.blog