get_the_archive_title()とget_the_archive_description()はarchive.phpの見出しと説明を共通化する
公開日: 執筆:佐藤
WordPress 4.1では、archiveの種類に応じた見出しを返すget_the_archive_title()と、分類の説明を返すget_the_archive_description()を使えます。category、tag、投稿type、日付ごとに条件分岐を書き連ねる前に、共通のarchive.phpでこの二つを使います。
ただし、titleとdescriptionは同じ範囲を扱いません。titleはcategory、tag、著者、日付、投稿format、投稿type、taxonomyなどを判定します。descriptionはcategory、tag、custom taxonomyのterm descriptionを返し、説明がなければ空です。
archive.phpでは表示用の関数を使う
見出しと説明をそのまま表示するなら、the_archive_title()とthe_archive_description()を使います。二つとも、内容が空でない場合だけ、前後に渡したHTMLと一緒に出力します。
<header class="archive-header">
<?php
the_archive_title( '<h1 class="archive-title">', '</h1>' );
the_archive_description( '<div class="archive-description">', '</div>' );
?>
</header>
descriptionが未入力なら、空のdivは出ません。template側で同じ条件をもう一度書く必要はありません。
値を別の処理へ渡したい場合は、get_the_archive_title()とget_the_archive_description()を使います。the_で始まる二つは表示し、get_で始まる二つは文字列を返すと分けて覚えると、変数へ入れたつもりで画面へ出してしまう誤りを避けられます。
archive titleは現在のqueryから種類を判断する
get_the_archive_title()は、現在表示しているarchiveのqueryを調べ、種類に応じたtitleを返します。
| archive | titleの組み立てに使う内容 |
|---|---|
| category | category名 |
| tag | tag名 |
| 著者 | 著者名 |
| 年、月、日 | queryの日付 |
| 投稿format | Aside、Gallery、Imageなどのformat名 |
| 投稿type | 投稿type archiveのtitle |
| custom taxonomy | taxonomyの単数labelとterm名 |
| その他 | Archives |
WordPress 4.1の出力には、Category:、Tag:、Author:、Year:など、archiveの種類を示す文字も含まれます。見出しを独自に変える必要がある場合は、get_the_archive_title filterで返す文字列を調整します。
function satolab_archive_title( $title ) {
if ( is_category() ) {
return single_cat_title( '', false );
}
return $title;
}
add_filter( 'get_the_archive_title', 'satolab_archive_title' );
この例はcategory archiveだけを変更し、ほかのarchiveはWordPressが作ったtitleを残します。すべてのarchiveを一つの固定文へ置き換えると、利用者が何の一覧を見ているか分からなくなります。変更対象を条件で限定してください。
archive descriptionはtermの説明を使う
get_the_archive_description()は、term descriptionを返します。category、tag、custom taxonomyの編集画面で入力した説明を、一覧の前に表示できます。
たとえば「WordPress」というcategoryなら、そのcategoryに含める記事の範囲、対象読者、更新方針を説明へ書けます。一覧へ記事を並べるだけでなく、何をまとめたページかを利用者へ示せます。
一方、著者archiveや日付archiveに、同じ関数から固有の説明が自動で付くわけではありません。説明が空なら、template側で架空の紹介文を補わず、そのarchiveに説明が必要かを先に判断します。
説明を加工する場合は、get_the_archive_description filterを使えます。ただし、運用担当が編集画面へ入力した文章をfilterで全面的に上書きすると、どこを直せば公開内容が変わるか分かりにくくなります。固定の装飾はtemplate、分類ごとの文章はterm descriptionへ置くほうが管理しやすくなります。
見出しとブラウザーのtitleを分ける
get_the_archive_title()が返すのは、archive本文へ表示する見出しです。HTMLのtitle要素を設定するためだけの関数ではありません。
画面内の見出し: get_the_archive_title()
分類の説明: get_the_archive_description()
文書のtitle: WordPressまたはthemeのtitle処理
三つを一つの文字列へ固定すると、画面では長すぎ、検索結果では説明不足になる場合があります。画面の見出し、分類説明、文書titleは役割を分けて設計してください。
共通化してもarchiveごとの内容は確認する
共通関数を使えば、archive.phpにcategory、tag、日付、著者の条件分岐を並べずに済みます。しかし、すべてのarchiveを公開するべきか、同じcardで見せるべきかは別の判断です。
確認する範囲を次の三段階に分けます。
- WordPressがどのarchive queryとして判定しているか
- titleとdescriptionが何を返すか
- そのarchiveを利用者と検索engineへ公開する必要があるか
記事が一件しかないtag、説明のないcategory、個人名を出せない著者archiveなどは、関数が値を返すことだけで公開判断を終えません。分類の目的、記事数、更新責任を確認します。
変更前にtemplate hierarchyを確認する
archive.phpを直しても、category.php、tag.php、taxonomy.php、author.php、date.phpなど、より優先されるtemplateがあれば、その画面には変更が出ません。
最初にtheme内のarchive用templateを一覧にし、どのURLがどのfileを使うか確認します。共通化するなら、個別templateを残す理由と、共通archive.phpへ任せる範囲を記録してください。
制作会社へtheme修正を依頼しても、categoryとtagの説明文、公開する分類、不要なarchiveの扱いはsite運用側で決めます。納品時には、次を残します。
- archiveの種類と使用template
- titleを変更するfilterと条件
- descriptionを入力する管理画面
- 説明が空の場合の表示
- archiveを追加したときの確認担当
最初の一手は、theme内からarchive.php、category.php、tag.php、taxonomy.phpを探し、実際に表示されるcategory URLを一つ開くことです。現在の見出しと説明を記録してから、共通関数へ置き換えてください。
関連記事

