• get_the_archive_title()とget_the_archive_description()はarchive.phpの見出しと説明を共通化する

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で見せるべきかは別の判断です。

確認する範囲を次の三段階に分けます。

  1. WordPressがどのarchive queryとして判定しているか
  2. titleとdescriptionが何を返すか
  3. その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を一つ開くことです。現在の見出しと説明を記録してから、共通関数へ置き換えてください。

戻る