WordPressの様々なアーカイブページのタイトル表示に便利な「get_the_archive_title ()」を使う。さらにフィルターフックを使って表示テキストなどを変更しよう

WordPressでアーカイブページのタイトルを表示する時は、どのアーカイブページを開いているかによって表示方法を変えたい場合もあると思います。

例えば・・・

  • 「カテゴリー」のアーカイブページのタイトルは「single_cat_title
  • 「タグ」のアーカイブページのタイトルは「single_tag_title
  • 「特定のカスタム投稿タイプ」のアーカイブページのタイトルは「post_type_archive_title

など、それぞれを使い分けてあげればOKです。

いきなり本題ですが、「get_the_archive_title ()」という関数を使ってみましょう。

「get_the_archive_title()」のコードの中身(一部)は下のようになっています。コードを全部見たい方はこちらでご確認ください。

function get_the_archive_title() {
 if ( is_category() ) {
  $title = sprintf( __( 'Category: %s' ), single_cat_title( '', false ) );
 } elseif ( is_tag() ) {
  $title = sprintf( __( 'Tag: %s' ), single_tag_title( '', false ) );
 } elseif ( is_author() ) {
  $title = sprintf( __( 'Author: %s' ), '<span class="vcard">' . get_the_author() . '</span>' );
 } elseif ( is_year() ) {
  $title = sprintf( __( 'Year: %s' ), get_the_date( _x( 'Y', 'yearly archives date format' ) ) );
 } elseif ( is_month() ) {
 ・・・以下省略

つまり「get_the_archive_title()」関数は、表示するアーカイブページによってそれぞれ「is_category()」や「is_tag()」などを使って条件分岐させて「アーカイブページのタイトルを出し分ける処理をまとめたもの」ですね。

「get_the_archive_title ()」の使いどころを1つ挙げると、例えばアーカイブページのテンプレートファイル「archive.php」のみ使う場合です。

「アーカイブページのデザインは、全部同じでいいよ」という場合などですね。そんな時は、ファイル内に下のように書けばOKです。

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

the_archive_title()」を使ってもOK。同じ結果になります。

<?php the_archive_title( '<h1>', '</h1>' ); ?>

「カテゴリー」「タグ」「カスタム投稿タイプ」などのアーカイブページのタイトルが、上のコードで出し分けられます。

テンプレートファイルに書くコードが少なく済むと、スッキリとして見やすいなぁと思います。

応用:フィルターフックで表示方法を変更する

「get_the_archive_title()」をそのまま使うと、例えばカテゴリーのアーカイブページを開いた時は、「カテゴリー:○○」みたいに表示されます。

この表示は変えられます。試しに下のコードを「functions.php」の最後尾に追記して、表示テキストを変えてみましょう。コードはHow to customize the_archive_title()?を参考にしました。

フィルターフックで表示テキストを変更

<?php
/*アーカイブページによって表示テキストを出し分ける*/
add_filter( 'get_the_archive_title', function ( $title ) {
 if( is_category('6') ) {
  $title = 'カテゴリーID「6」の記事一覧';
 } elseif( is_category() or is_tag() ) {
  $title = '【' . single_cat_title( '', false ) . '】に関する記事の一覧';
 }
 return $title;
});
?>

上のコードがやっていることは、カテゴリーIDが「6」のアーカイブページの場合は「カテゴリーID「6」の記事一覧」という表示を、それ以外の「カテゴリー」「タグ」のアーカイブページは「【○○】に関する記事の一覧」という表示をさせるように変更しています。

その他のアーカイブページの表示を変えたい場合は、同じような要領で「elseif」などを使って条件分岐を加えてあげればOKです。

WordPressでサイト制作をする際は、アーカイブページのデザインをすることが多いので、毎度使うフィルターフックとして覚えておこうと思いました。

もし似たような活用をされたい方は、ご参考頂けますと幸いです。

著者:bouya Imamura