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

2020.04.03 2020.04.03

TOPICS

翻訳元記事はこちらです。

訪問者がカテゴリー、タグ、カスタムタクソノミーへのハイパーリンクをクリックすると、WordPressはそのタクソノミーでフィルタリングされた投稿のページを投稿日時の降順で表示します。

デフォルトでは、このページは index.php テンプレートファイルを使用して生成されます。オプションのテンプレートファイルを作成して、index.php テンプレートファイルを上書きしたり、洗練させたりすることができます。ここでは、そのようなテンプレートの使用方法と作成方法について説明します。

タクソノミーのテンプレート階層

WordPressでは、テンプレート階層で決められた順番で投稿を表示しています。

category.php、tag.php、およびtaxonomy.phpテンプレートでは、タクソノミーによってフィルタリングされた投稿を、フィルタリングされていない投稿や別のタクソノミーによってフィルタリングされた投稿とは異なる扱いにすることができます。
(注:投稿は、任意の投稿タイプを指します – 投稿、固定ページ、カスタム投稿タイプなど)
これらのファイルは、特定のタクソノミーや特定のタクソノミータームをターゲットにすることができます。例えば、以下のようになります。

そのため、ニュースという名前の動物タクソノミーの中のすべての投稿を、他のカテゴリーでフィルタリングされた投稿とは異なるページでフォーマットすることができます。

archive.phpテンプレートは最も一般的なコントロールの形を提供し、すべてのアーカイブのレイアウトを提供します。

カテゴリー

カテゴリーの場合、WordPress は category-{slug}.php ファイルを探します。もし存在しない場合は、WordPress は次の階層レベルの category-{ID}.php などのファイルを探します。WordPress が特化したテンプレートや archive.php テンプレートファイルを見つけられなかった場合は、index.php を使用してデフォルトのテンプレートを表示します。

以下はカテゴリーのテンプレート階層です。

  1. category-{slug}.php:例えば、カテゴリーのスラッグが「news」という名前の場合、WordPressは「category-news.php」という名前のファイルを探します。
  2. tegory-{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 などを探します。WordPressが特化したテンプレートやarchive.phpのテンプレートファイルを見つけられなかった場合は、index.phpを使用してデフォルトのテンプレートを表示します。

以下はタグのテンプレート階層です。

  1. tag-{slug}.php:例えば、タグのスラッグが「somethingag」という名前の場合、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}-{term}.php ファイルを探します。もしそれが存在しない場合、WordPressは次に次の階層レベル、taxonomy-{taxonomy}.phpのファイルを探します。WordPressが特化したテンプレートや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>
This is some text that will display at the top of the Category page.
</p>

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

いくつかのカテゴリーで違うテキストを表示する

訪問者が表示しているカテゴリーページによって異なるテキストを表示したい場合はどうしますか?
メインのcategory.phpファイルにデフォルトのテキストを追加し、それぞれのバージョンのテキストを持つ特別なcategory-{slug}.phpファイルを作成することができますが、これはテーマ内にたくさんのファイルを作成することになります。その代わりに、条件付きタグを使用することができます。

以下のコードをループの前に追加してください。

<?php if (is_category('Category A')) : ?>
      <p>This is the text to describe category A</p>
<?php elseif (is_category('Category B')) : ?>
      <p>This is the text to describe category B</p>
<?php else : ?>
      <p>This is some generic text to describe all other category pages,
I could be left blank</p>
<?php endif; ?>

このコードでは以下のことを行っています。

  1. カテゴリーAのページを表示している場合、1つ目のテキストを表示します
  2. カテゴリーBのページを表示している場合、2つ目のテキストを表示します
  3. それ以外の場合は、デフォルトのテキストを表示します

アーカイブの最初のページにのみテキストを表示

アーカイブの1ページに収まる数よりも多くの投稿がある場合、カテゴリーは複数のページに分割されます。おそらく、ユーザーが結果の最初のページにいる場合、静的なテキストを表示したいと思うでしょう。

これを行うには、PHP の if文を使用して、WordPress の変数 $paged の値を調べます。

ループの上に以下のコードを追加してください。

<?php if ( $paged < 2 ) : ?>
      <p>Text for first page of Category archive.</p>
<?php else : ?>
<?php endif; ?>

このコードは、表示されるページがアーカイブの最初のページであるかどうかを判定します。そうであれば、最初のページのテキストが表示されます。そうでなければ、なにも表示されません。

投稿の表示の変更

抜粋か投稿のすべてか

投稿の全文を表示するか、抜粋のみを表示するかを選択できます。抜粋を表示することで、アーカイブページの長さを短くすることができます。

ファイルを開いて、ループの中の以下のコードを見つけてください。

the_content()

以下のコードに置き換えます。

the_excerpt()

逆に、テーマが抜粋文を表示しているが、完全なコンテンツを表示したい場合は、the_excerptthe_contentに置き換えてください。