get_the_archive_title() WP 4.1.0
Получает заголовок архивной страницы, на основе типа страницы (метка, рубрика, дата).
Функция умеет работать со всеми типами архивных страниц включая: рубрики, метки, таксономии, год, месяц, день, форматы постов (галерея, фото, видео, аудио), архив типа поста.
Текст, передается как строка перевода (пр: __( 'Category: %s' )
).
Если нужно сразу вывести текст на экран, используйте the_archive_title()
.
Возвращает
Строку, заголовок страницы.
Использование
$archive_title = get_the_archive_title();
Примеры
#1 Заголовок для всех типов архивных страниц сразу
Предположим у нас в шаблоне один файл index.php, обрабатывает все архивные страницы и нам нужно указать для каждой их них разный заголовок, например:
-
Если категория, то: "Категория: оптимизация"
-
Если метка, то: "Метка: коддинг"
- Если архив по году, то: "Год: 2104"
До версии 4.1 мы это делали с помощью комбинации условий if ... else ...
и условных тегов, но теперь мы можем использовать всего одну строку:
<h1><?php echo get_the_archive_title() ?></h1>
Список изменений
<?php
function get_the_archive_title() {
$title = __( 'Archives' );
if ( is_category() ) {
/* translators: Category archive title. %s: Category name. */
$title = sprintf( __( 'Category: %s' ), single_cat_title( '', false ) );
} elseif ( is_tag() ) {
/* translators: Tag archive title. %s: Tag name. */
$title = sprintf( __( 'Tag: %s' ), single_tag_title( '', false ) );
} elseif ( is_author() ) {
/* translators: Author archive title. %s: Author name. */
$title = sprintf( __( 'Author: %s' ), '<span class="vcard">' . get_the_author() . '</span>' );
} elseif ( is_year() ) {
/* translators: Yearly archive title. %s: Year. */
$title = sprintf( __( 'Year: %s' ), get_the_date( _x( 'Y', 'yearly archives date format' ) ) );
} elseif ( is_month() ) {
/* translators: Monthly archive title. %s: Month name and year. */
$title = sprintf( __( 'Month: %s' ), get_the_date( _x( 'F Y', 'monthly archives date format' ) ) );
} elseif ( is_day() ) {
/* translators: Daily archive title. %s: Date. */
$title = sprintf( __( 'Day: %s' ), get_the_date( _x( 'F j, Y', 'daily archives date format' ) ) );
} elseif ( is_tax( 'post_format' ) ) {
if ( is_tax( 'post_format', 'post-format-aside' ) ) {
$title = _x( 'Asides', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) {
$title = _x( 'Galleries', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-image' ) ) {
$title = _x( 'Images', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-video' ) ) {
$title = _x( 'Videos', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-quote' ) ) {
$title = _x( 'Quotes', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-link' ) ) {
$title = _x( 'Links', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-status' ) ) {
$title = _x( 'Statuses', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-audio' ) ) {
$title = _x( 'Audio', 'post format archive title' );
} elseif ( is_tax( 'post_format', 'post-format-chat' ) ) {
$title = _x( 'Chats', 'post format archive title' );
}
} elseif ( is_post_type_archive() ) {
/* translators: Post type archive title. %s: Post type name. */
$title = sprintf( __( 'Archives: %s' ), post_type_archive_title( '', false ) );
} elseif ( is_tax() ) {
$queried_object = get_queried_object();
if ( $queried_object ) {
$tax = get_taxonomy( $queried_object->taxonomy );
/* translators: Taxonomy term archive title. 1: Taxonomy singular name, 2: Current taxonomy term. */
$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->singular_name, single_term_title( '', false ) );
}
}
/**
* Filters the archive title.
*
* @since 4.1.0
*
* @param string $title Archive title to be displayed.
*/
return apply_filters( 'get_the_archive_title', $title );
}
Cвязанные функции
Еще из раздела: Архивы
Довольно странно, что не предусмотрена возможность убирать название таксономии из строки, потому данной функцией пользуются только разработчики некоторых тем, которым лень писать нормальную функцию и в итоге на страницах получаем:
В общем, функция демонстрационная, на практике же не нужна по сео причинам.
Ну как сказать... Есть же фильтр, через который можно подправить все... Как по мне, очень полезная функция...
А править нужно будет как обычно в одном, двух местах, все остальное подходит...
Да? И как же? Она генерирует строку с "Рубрика", "Теги" и уже такой передаёт в фильтр. Регулярками вырезать? Бред. Изменять содержимое переменной, как это подсказали в функции the_archive_title? Тогда какой смысл от функции, если это и без неё кодом можно сделать
Повторюсь, если бы функции можно было бы запретить 1 параметром не выводить название таксономии, то это цены б ей не было. А так для разработчиков, которые о сео заботятся, она бесполезна.
Хуком норм это вырезать... Судя по тому что везде добавляется
Строка:
- это можно быстро вырезать:И это проще чем писать новую функцию, которая скорее всего будет на 90% состоять из такого же кода... Точечно тоже можно изменить, через другие фильтры... Скорость работы - световая, при этом кода меньше, а результат достигнут...
П.С. Вообще я конечно согласен, что можно было ей параметров придумать для управления, но как сейчас тоже в целом норм...
Получилось. Можно поподробнее как это работает в php дуб.
Ищешь файл wp-includes/general-template.php, открываешь, Ctrl+F function get_the_archive_title, в конце функции добавляешь код фильтра...