投稿一覧ページ(アーカイブページ)は全て「archive.php」を参照しますが、一口にアーカイブページといってもその種類はさまざまです。
カテゴリー別一覧、タグ別一覧、年月別一覧…
<h1>XXXXXX の記事一覧</h1>
というページタイトルにしたとして、残念ながらXXXXXXの部分の出力は一筋縄ではいきません。
カテゴリー別の際はカテゴリー名、タグ別の際はタグ名、年月別の場合は年月をと、それぞれのページによって出力したい内容が変わるためです。
今回はそんな「archive.php」のタイトルを、アーカイブの種類によって分岐させる方法を紹介します。
まずはアーカイブページの種類とURLを知ろう
さて、アーカイブにもさまざまですが、どれくらい種類があるかご存知でしょうか?
- カテゴリ:サイトURL/category/スラッグ名/
- タグ:サイトURL/tag/スラッグ名/
- カスタム投稿タイプ:サイトURL/カスタイ投稿タイプ名/
- カスタムタクソノミー:サイトURL/タクソノミースラッグ名/タームスラッグ名/
- 年:サイトURL/年/
- 月:サイトURL/年/月/
- 日:サイトURL/年/月/日
- 投稿者:サイトURL/author/ユーザー名
なんとこんなにも!
※各アーカイブページのURLは設定によって異なる場合があります。
アーカイブページのタイトルを種類によって分岐させる方法
以下をコピペすることで、アーカイブページのタイトルが種類によって適切なタイトルが出力されます。
テキスト部分は各自自由に書き換えてOK
書き換えやすいよう、極力シンプルにしています。
<h1>
<?php if(is_category() || is_tag() || is_tax()): ?>
<?php echo single_term_title('',false); ?>
<?php elseif(is_post_type_archive()): ?>
<?php echo post_type_archive_title('',false); ?>
<?php elseif(is_year()): ?>
<?php the_time("Y年"); ?>
<?php elseif(is_month()): ?>
<?php the_time("Y年n月"); ?>
<?php elseif(is_day()): ?>
<?php the_time("Y年n月j日") ?>
<?php endif; ?>
の投稿一覧
</h1>
カテゴリー、タグ、タクソノミー別の場合
<?php if(is_category() || is_tag() || is_tax()): ?>
の部分がそれにあたります。
カテゴリー、タグ、タクソノミーをひとまとめにしている理由は、タイトルの出力方法が同じだからです。
カテゴリー名もタグ名もタクソノミー名も
<?php echo single_term_title('',false); ?>
で出力することができます。
カスタム投稿タイプの場合
<?php elseif(is_post_type_archive()): ?>
の部分ですね。
<?php echo post_type_archive_title('',false); ?>
これでカスタム投稿タイプの投稿名を出力してくれます。
年別、月別、日別の場合
年がis_year、月がis_month、日がis_dateで分岐されます。
<?php elseif(is_year()): ?>
<?php the_time("Y年"); ?>
<?php elseif(is_month()): ?>
<?php the_time("Y年n月"); ?>
<?php elseif(is_day()): ?>
<?php the_time("Y年n月j日") ?>
投稿者別アーカイブページは無視しています
投稿者別のアーカイブページは、URLが
サイトURL/author/ユーザー名
と定められています。
つまり仕様上、ワードプレスのログインIDがバレてしまいますので、そもそも使用しないことをオススメします。
ワードプレス公式のスタンスとしては「パスワードあるし問題ないじゃん?」といった感じなのですが、それでもやはりIDはバレていいものではありません。
投稿者アーカイブページはワードプレスの仕様で自動的に作成されるので、functions.phpに記述を加えることで、投稿者アーカイブページを無効にすることができます。
こちらについては、ワードプレスのセキュリティを手軽に強化する方法の記事で別途紹介しています。