get_the_archive_title()
Gets the title of the archive page based on the type of page (tag, category, date).
The function can work with all types of archive pages including: categories, tags, taxonomies, year, month, day, post formats (gallery, photo, video, audio), post type archive.
Text is passed as a translation string (e.g., __( 'Category: %s' )).
If you need to immediately output the text on the screen, use the_archive_title().
Hooks from the function
Returns
String. A string, the title of the page.
Usage
$archive_title = get_the_archive_title();
Examples
#1 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 );
#2 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;
#3 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;
} #4 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>
Changelog
| Since 4.1.0 | Introduced. |
| Since 5.5.0 | The title part is wrapped in a element. |