• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

タクソノミーテンプレート

提供: WordPress Codex 日本語版
Taxonomy Templatesから転送)
移動先: 案内検索

この項目「タクソノミーテンプレート」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

サイトの訪問者がカテゴリー、タグまたはカスタム分類を指すハイパーリンクをクリックすると、WordPress はそのタクソノミー(カテゴリー、タグ、カスタム分類)で絞り込んだ投稿を日付の逆順に並べたページを表示します。

デフォルトではそのページを生成するのに index.php テンプレートファイルが使われます。しかしオプションのテンプレートファイルを作れば、index.php テンプレートファイルより優先させて洗練した表示を行うことができます。このセクションはそのようなテンプレートの使い方と作り方を説明します。

WordPress はテンプレート階層によって決められた方法で投稿を表示します。

category.php, tag.php, および taxonomy.php テンプレートは、あるタクソノミーで絞り込まれた投稿を、絞り込まない投稿や違うタクソノミーで絞り込んだ投稿と異なる方法で扱うことができます。(参考:この投稿は任意の投稿タイプを示します。ふつうの投稿、固定ページ、カスタム投稿タイプなど)。これらのファイルを使って、特定のタクソノミーやタクソノミーのタームに限定できます。

  • taxonomy-{taxonomy}-{term}.php
  • taxonomy-{taxonomy}.php
  • tag-{slug}.php
  • tag-{id}.php
  • category-{slug}.php
  • category-{ID}.php

従って例えば「動物」タクソノミーの「ニュース」タームがついた投稿を表示するページを、他のカテゴリーで絞り込んだ投稿とは違う外観にフォーマットできます。

archive.php テンプレートは、すべてのアーカイブに対して一種類のレイアウト、つまり最も汎用の表示形式を提供します。それは投稿をひとつのリストとして表示する単独のページです。

カテゴリー

カテゴリーの場合 WordPress は category-{slug}.php ファイルを探します。存在しなければ WordPress は階層の次のレベルである category-{ID}.php を探し… というように続けます。もし特別誂えのテンプレートも archive.php テンプレートファイルも見つからなければ、デフォルトの動作が index.php によって行われます。

カテゴリーのテンプレート階層は次のとおりです:

  1. category-{slug}.php : 例えばカテゴリーのスラッグが「news」なら、WordPress は category-news.php という名前のファイルを探します。
  2. category-{ID}.php : 例えばカテゴリ ID が「6」なら、WordPress は category-6.php という名前のファイルを探します。
  3. category.php
  4. archive.php
  5. index.php

タグ

タグの場合 WordPress は tag-{slug}.php ファイルを探します。存在しなければ WordPress は階層の次のレベルである tag-{ID}.php を探し… というように続けます。もし特別誂えのテンプレートも archive.php テンプレートファイルも見つからなければ、デフォルトの動作が index.php によって行われます。

タグのテンプレート階層は次のとおりです:

  1. tag-{slug}.php : 例えばタグのスラッグが「sometag」なら、WordPress は tag-sometag.php という名前のファイルを探します。
  2. tag-{id}.php : 例えばタグ ID が「6」なら、WordPress は tag-6.php という名前のファイルを探します。
  3. tag.php
  4. archive.php
  5. 'index.php

カスタム分類

カスタム分類(タクソノミー)のテンプレート階層は、上記のカテゴリーやタグの階層と同じように働きます。WordPress は taxonomy-{taxonomy}-{taxonomy-term}.php ファイルを探します。存在しなければ WordPress は階層の次のレベルである taxonomy-{taxonomy}.php を探し… というように続けます。もし特別誂えのテンプレートも archive.php テンプレートファイルも見つからなければ、デフォルトの動作が index.php によって行われます。

カスタム分類のテンプレート階層は次のとおりです:

  1. taxonomy-{taxonomy}-{term}.php : 例えばタクソノミーのスラッグが「sometax」でそのタームのスラッグが「someterm」なら、WordPress は taxonomy-sometax-someterm.php という名前のファイルを探します。
  2. taxonomy-{taxonomy}.php : 例えばタクソノミーのスラッグが「sometax」なら、WordPress は taxonomy-sometax.php という名前のファイルを探します。
  3. taxonomy.php
  4. archive.php
  5. index.php


タクソノミー用テンプレートファイル作成

たった今、タクソノミーで絞り込んだコンテンツ用にカスタムデザインを作る必要があると決心したとします。何から始めればよいでしょうか?

空っぽのファイルから始めるよりも、階層における次のファイルをコピー(もしあれば)するのが良い練習になります。archive.php を作成済みなら、コピーして名前を category.php にし、自分のデザインに合わせて変更しましょう。もし archive.php ファイルがなければ、テーマの index.php をコピーして始めましょう。

どのタクソノミー用テンプレートファイルを作るにしても同じ手順が使えます。archive.php, category.php, tag.php, または index.php のどれかをコピーして始めればよいのです。


用例

さて、変更する必要のあるテンプレートファイルをテーマのディレクトリーから選びました。いくつか例を見てみましょう。

カテゴリーページにテキストを追加

投稿の上に静的なテキスト

カテゴリーページの投稿一覧の上に何か静的なテキストを表示したいとします。「静的な」テキストは、どの投稿が表示されていても、またどのカテゴリーが表示されていても変わらないものです。

テンプレートファイルを開いてループセクションの上に、次のコードを挿入します:

<p>
これはカテゴリーページの先頭に表示されるテキストのサンプルです。
</p>

このテキストはそのカテゴリーの投稿を表示するアーカイブページだけに表示されます。

一部のカテゴリーページに異なるテキスト

訪問者が選んだカテゴリーページに応じて異なるテキストを表示したいならどうすればよいでしょう? デフォルトのテキストをメインである category.php ファイルへ追加し、各カテゴリー専用の category-{slug}.php を作ってそれぞれのテキストを入れることができます。しかしこれでは大量のファイルをテーマ内に作ることになるので、代わりに条件分岐タグを利用できます。

前と同じく、次のコードをループの上に追加します。

<?php if ( is_category( 'Category A' ) ) : ?>
      <p>カテゴリー A の説明テキスト</p>
<?php elseif ( is_category( 'Category B' ) ) : ?>
      <p>カテゴリー B の説明テキスト</p>
<?php else : ?>
      <p>他のカテゴリーページすべての説明テキスト。空っぽにしてもよい</p>
<?php endif; ?>

このコードは次のように働きます:

  1. 訪問者がカテゴリー A を要求したかチェック。そうなら第 1 のテキストを表示。
  2. 要求がカテゴリー A でなければカテゴリー B であるかチェック。そうなら第 2 のテキストを表示。
  3. どちらの要求でもなければ、デフォルトのテキストを表示。

アーカイブの先頭ページだけにテキストを表示

アーカイブの 1 ページに収まるよりたくさん投稿があると、カテゴリーは複数のページに分けられます。ユーザーが先頭ページにいるときだけ、静的なテキストを表示したいとしましょう。

そうするには PHP の if 文を使って WordPress の $paged 変数の値を確かめます。

次のコードをループの上に追加します。

<?php if ( $paged < 2 ) : ?>
      <p>カテゴリーアーカイブの先頭ページ用のテキスト。</p>
<?php else : ?>
      <!-- 残りのページ用にテキストを表示するならここに追加 -->
<?php endif; ?>

このコードは表示中のページがアーカイブの先頭ページであるか確かめます。もしそうなら先頭ページ用のテキストを表示します。そうでなければ(この例では何も表示しませんが)残りのページ用のテキストを表示できます。


投稿の表示形式を変更

抜粋と投稿全体

投稿の全体を表示するか抜粋だけを表示するか選択できます。抜粋を表示すればアーカイブページの長さを短くできます。

ファイルを開いてループを見つけます。そして次のコードを探し:

the_content()

それを次のコードで置き換えます:

the_excerpt()

もしテーマがすでに抜粋を表示していて、コンテンツ全体を表示したければ、the_excerptthe_content へ置き換えます。


参考

関連項目

テンプレート階層: カテゴリーテンプレート, タグテンプレート, タクソノミーテンプレート, ページテンプレート, 投稿タイプテンプレート, 投稿者テンプレート, 日付テンプレート, 検索テンプレート, 404 テンプレート, 添付ファイルテンプレート, ループテンプレート /en


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版:Theme Handbook / Template Files Section / Taxonomy Templates