get_the_archive_title()で呼び出したタイトルから”アーカイブ:”、”カテゴリー:”、”タグ:”、”作者:”を消す方法

WordpressのブランクテーマのSageではアーカイブ、タイトル等のタイトルの出力に、

get_the_archive_title();

を使用している。そのため、タイトル部分の出力をする際に以下のようになってしまう。

archive.phpの場合

アーカイブ:タイトル

 年別アーカイブの場合

 年:◯年

 月別アーカイブの場合

 月:◯年◯月

category.phpの場合

カテゴリー:タイトル

author.phpの場合

作者:作者名

この「:」より前の部分が不要なので削除したい・・・

ということで検索したところ以下のような記事が。


wordpress.stackexchange.com


add_filter( 'get_the_archive_title', function ($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>' ;
        }
    return $title;
});

これでいけたと思いきや、カスタム投稿タイプのページを開くと以下のような感じで残ってしまっていた。


アーカイブ:カスタム投稿タイトル

そりゃアーカイブページの場合の分岐なかったもんな・・・そこで、仕方がないのでget_the_archive_title();を検索。


get_the_archive_title() | Function | WordPress Developer Resources

アーカイブのタイトルはpost_type_archive_title()で呼び出されてるっぽいので、さっきのコードを少し変更。

add_filter( 'get_the_archive_title', function ($title) {
    if ( is_archive() ) {       
            $title = post_type_archive_title( '', false );   
        } elseif (  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>'
        }
    return $title;
});

これで、「アーカイブ:」も消えました。