WordPress как на ладони

get_the_archive_title()WP 4.1.0

Получает заголовок архивной страницы, на основе типа страницы (метка, рубрика, дата).

Функция умеет работать со всеми типами архивных страниц включая: рубрики, метки, таксономии, год, месяц, день, форматы постов (галерея, фото, видео, аудио), архив типа поста.

Текст, передается как строка перевода (пр: __( 'Category: %s' )).

Если нужно сразу вывести текст на экран, используйте the_archive_title().

Основа для: the_archive_title()

Возвращает

Строку. Строку, заголовок страницы.

Использование

$archive_title = get_the_archive_title();

Примеры

1

#1 Заголовок для всех типов архивных страниц сразу

Предположим у нас в шаблоне один файл index.php, обрабатывает все архивные страницы и нам нужно указать для каждой их них разный заголовок, например:

  • Если категория, то: "Категория: оптимизация"

  • Если метка, то: "Метка: коддинг"

  • Если архив по году, то: "Год: 2104"

До версии 4.1 мы это делали с помощью комбинации условий if ... else ... и условных тегов, но теперь мы можем использовать всего одну строку:

<h1><?php echo get_the_archive_title() ?></h1>
0

#2 Удалим префикс заголовка архивов

Например, если мы хотим избавиться от префикса Архивы: и от других префиксов Категории:, Метки:, то можно использовать специальный хук get_the_archive_title_prefix:

add_filter( 'get_the_archive_title_prefix', '__return_empty_string' );

Теперь, если раньше выводило "Категория: Оптимизация", то выведет просто "Оптимизация".

Этот фильтр нужно вызывать перед вызовом этой функции, чтобы когда она сработает фильтр уже был создан.

Или изменим префикс заголовка архивной страницы
<?php add_filter( 'get_the_archive_title_prefix', fn( $prefix ) => 'Раздел:' ); ?>
<h1><?= get_the_archive_title() ?></h1>

Теперь, если раньше выводило "Категория: Оптимизация", то выведет "Раздел: Оптимизация".

Список изменений

С версии 4.1.0 Введена.
С версии 5.5.0 The title part is wrapped in a element.

Код get_the_archive_title() WP 6.6.2

function get_the_archive_title() {
	$title  = __( 'Archives' );
	$prefix = '';

	if ( is_category() ) {
		$title  = single_cat_title( '', false );
		$prefix = _x( 'Category:', 'category archive title prefix' );
	} elseif ( is_tag() ) {
		$title  = single_tag_title( '', false );
		$prefix = _x( 'Tag:', 'tag archive title prefix' );
	} elseif ( is_author() ) {
		$title  = get_the_author();
		$prefix = _x( 'Author:', 'author archive title prefix' );
	} elseif ( is_year() ) {
		/* translators: See https://www.php.net/manual/datetime.format.php */
		$title  = get_the_date( _x( 'Y', 'yearly archives date format' ) );
		$prefix = _x( 'Year:', 'date archive title prefix' );
	} elseif ( is_month() ) {
		/* translators: See https://www.php.net/manual/datetime.format.php */
		$title  = get_the_date( _x( 'F Y', 'monthly archives date format' ) );
		$prefix = _x( 'Month:', 'date archive title prefix' );
	} elseif ( is_day() ) {
		/* translators: See https://www.php.net/manual/datetime.format.php */
		$title  = get_the_date( _x( 'F j, Y', 'daily archives date format' ) );
		$prefix = _x( 'Day:', 'date archive title prefix' );
	} 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() ) {
		$title  = post_type_archive_title( '', false );
		$prefix = _x( 'Archives:', 'post type archive title prefix' );
	} elseif ( is_tax() ) {
		$queried_object = get_queried_object();
		if ( $queried_object ) {
			$tax    = get_taxonomy( $queried_object->taxonomy );
			$title  = single_term_title( '', false );
			$prefix = sprintf(
				/* translators: %s: Taxonomy singular name. */
				_x( '%s:', 'taxonomy term archive title prefix' ),
				$tax->labels->singular_name
			);
		}
	}

	$original_title = $title;

	/**
	 * Filters the archive title prefix.
	 *
	 * @since 5.5.0
	 *
	 * @param string $prefix Archive title prefix.
	 */
	$prefix = apply_filters( 'get_the_archive_title_prefix', $prefix );
	if ( $prefix ) {
		$title = sprintf(
			/* translators: 1: Title prefix. 2: Title. */
			_x( '%1$s %2$s', 'archive title' ),
			$prefix,
			'<span>' . $title . '</span>'
		);
	}

	/**
	 * Filters the archive title.
	 *
	 * @since 4.1.0
	 * @since 5.5.0 Added the `$prefix` and `$original_title` parameters.
	 *
	 * @param string $title          Archive title to be displayed.
	 * @param string $original_title Archive title without prefix.
	 * @param string $prefix         Archive title prefix.
	 */
	return apply_filters( 'get_the_archive_title', $title, $original_title, $prefix );
}
6 комментариев
    Войти