JOURNAL クリエイティブとマーケティングの話

【WordPress】アーカイブページ(カテゴリー、タグ、月別アーカイブ、作成者、ターム、検索結果)のタイトルを表示する方法

WordPressでサイト構築していて地味に面倒なのが、以下のようなアーカイブページのタイトル表示です。

  • カテゴリーページ
  • タグページ
  • 月別アーカイブページ
  • 作成者ページ
  • タームページ
  • 検索結果ページ

archive.phpとかでタイトル表示する共通の関数とかありそうなもんですが、探してみても見つからなかった記憶があります。

なので、個別に出力する必要があります。

カテゴリータイトルを表示する方法

<h1 class="archive_ttl"><?php single_cat_title(); ?></h1>

以下のテンプレートファイルの、任意の箇所に記述してください。

  • category.php
  • category-[カテゴリースラッグ].php
  • category-[カテゴリーID].php

タグタイトルを表示する方法

<h1 class="archive_ttl"><?php single_tag_title(); ?></h1>

以下のテンプレートファイルの、任意の箇所に記述してください。

  • tag.php
  • tag-[タグスラッグ].php
  • tag-[タグID].php

月別アーカイブタイトルを表示する方法

<h1 class="archive_ttl"><?php echo get_the_date('Y年n月'); ?>の記事一覧</h1>

date.phpの任意の箇所に記述してください。

上記の例みたいに「〜の記事一覧」と付けておくと分かりやすいかもです。

作成者ページタイトルを表示する方法

<h1 class="archive_ttl"><?php the_author(); ?>が書いた記事一覧</h1>

以下のテンプレートファイルの、任意の箇所に記述してください。

  • author.php
  • author-[ユーザー名].php
  • author-[ユーザーID].php

こちらも例のように「〜が書いた記事一覧」などと書いておいた方が自然です。

タームタイトルを表示する方法

<h1 class="archive_ttl"><?php single_term_title(); ?></h1>

以下のテンプレートファイルの、任意の箇所に記述してください。

  • taxonomy.php
  • taxonomy-[タクソノミースラッグ].php
  • taxonomy-[タクソノミースラッグ]-[タームスラッグ].php

タクソノミーとタームについて

タクソノミーとタームの関係は若干とっつきにくいかもしれませんが、これはWordPress標準の「カテゴリー」に置き換えて考えると分かりやすくなります。

標準のカテゴリーという仕組みは、まず「カテゴリー」という記事を区分するための大きな枠組みがありますよね。

そしてそのカテゴリーの中に、たとえば「Webデザイン」「コーディング」「ライティング」みたいな項目がある、みたいな構造になっています。

タクソノミーはここで言うところの「カテゴリー」、タームは「Webデザイン」「コーディング」「ライティング」などの各項目のことを指します。

検索結果ページタイトルを表示する方法

<h1 class="archive_ttl">"<?php echo get_search_query(); ?>"の検索結果</h1>

search.phpの任意の箇所に記述してください。

こちらも「”〜”の検索結果」と付けておいた方が分かりやすいと思います。

archive.phpで条件分岐させる方法

ここまではアーカイブページの種類によってテンプレートファイルを分ける使い方を紹介しましたが、archive.phpにまとめることもできます。

各アーカイブページでデザインやレイアウトに大きな差異がない場合は、こちらの方法で実装した方が管理が楽だと思います。

<h1 class="archive_ttl">
	<?php if(is_category()): //カテゴリーページ ?>
		<?php single_cat_title(); ?>
	<?php elseif(is_tag()): //タグページ ?>
		<?php single_tag_title(); ?>
	<?php elseif(is_date()): //月別アーカイブページ ?>
		<?php echo get_the_date('Y年n月'); ?>の記事一覧
	<?php elseif(is_author()): //作成者ページ ?>
		<?php the_author(); ?>が書いた記事一覧
	<?php elseif(is_tax('news')): //タクソノミー「news」ページ ?>
		<?php single_term_title(); ?>
	<?php endif; ?>
</h1>

なお、検索結果ページにはarchive.phpは適用されません。

そのためアーカイブページのテンプレートファイルをまとめたい場合でも、search.phpは別個に用意する必要があります。

もしくはタイトル部分のソースコードだけ別パーツにしておき、archive.phpとsearch.phpのそれぞれからget_template_part()関数で呼び出す形にしておくと多少管理しやすくなるかと思います。

その場合は、以下のような感じで一緒くたに書いてしまって大丈夫(なはず)です。

<h1 class="archive_ttl">
	<?php if(is_category()): //カテゴリーページ ?>
		<?php single_cat_title(); ?>
	<?php elseif(is_tag()): //タグページ ?>
		<?php single_tag_title(); ?>
	<?php elseif(is_date()): //月別アーカイブページ ?>
		<?php echo get_the_date('Y年n月'); ?>の記事一覧
	<?php elseif(is_author()): //作成者ページ ?>
		<?php the_author(); ?>が書いた記事一覧
	<?php elseif(is_tax('news')): //タクソノミー「news」ページ ?>
		<?php single_term_title(); ?>
	<?php elseif(is_search()): //検索結果ページ ?>
		"<?php echo get_search_query(); ?>"の検索結果
	<?php endif; ?>
</h1>