get_the_archive_title()WP 4.1.0

Retrieve the archive title based on the queried object.

Return

String. Archive title.

Usage

get_the_archive_title();

Examples

0

#1 Title for all types of archive pages at once

Suppose we have a template file index.php, handles all the archive pages and we need to specify each of them a different header, for example:

  • If a category, then: "Category: optimization".
  • If tag, then: "Tag: coding".
  • If archive by year, then: "Year: 2104".

Before version 4.1 we did this with a combination of conditions if ... else ... and conditional tags, but now we can use just one line:

<h1><?= get_the_archive_title() ?></h1>
0

#2 CPT Title Without word: ‘Archive’:

If you are building custom archive template for a CPT, and want to output just the title of the CPT with no extra word like “Archive” use following function instead:

echo post_type_archive_title( '', false );
0

#3 Text before the archive title

Add text or execute a function before the archive title using filter get_the_archive_title.

add_filter( 'get_the_archive_title', 'modify_archive_title', 10, 1 );

function modify_archive_title( $title ) {

	$var = "1";

	return $var . $title;
}

or simply:

$q = get_queried_object();

// category title : custom post type archive title
$title = is_category() ? $q->name : $q->labels->name;
0

#4 Getting rid of archive “label”

If you would like to get rid of the “Category:”, “Tag:”, “Author:”, “Archives:” and “Other taxonomy name:” in the archive title, use get_the_archive_title_prefix introduced in 5.5:

// remove “Category:”, “Tag:”, “Author:”, “Archives:” ... archive title
add_filter( 'get_the_archive_title_prefix', '__return_empty_string' );

Now, if it used to output Category: Optimization, it will just output Optimization.

This filter should be called before calling this function so that when it is triggered the filter is already created.

Or change the archive page header prefix
<?php add_filter( 'get_the_archive_title_prefix', fn( $prefix ) => 'Section:' ); ?>
<h1><?= get_the_archive_title() ?></h1>

Now, if it used to output Category: Optimization, it will output Section: Optimization.

Before WP 5.5

Use this little function in your (child) theme functions.php file:

add_filter( 'get_the_archive_title', 'my_theme_archive_title' );

function my_theme_archive_title( $title ) {

	if ( is_category() ) {
		$title = single_cat_title( '', false );
	} elseif ( is_tag() ) {
		$title = single_tag_title( '', false );
	} elseif ( is_author() ) {
		$title = '<span class="vcard">' . get_the_author() . '</span>';
	} elseif ( is_post_type_archive() ) {
		$title = post_type_archive_title( '', false );
	} elseif ( is_tax() ) {
		$title = single_term_title( '', false );
	}

	return $title;
}

Changelog

Since 4.1.0 Introduced.
Since 5.5.0 The title part is wrapped in a element.

get_the_archive_title() code 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 );
}