WordPressのテンプレート階層(優先順位)を知る

WordPressでは、訪問者がサイトにアクセスした場合静的フロントページがあるかどうかを判断します。
静的とは、例えば、index.html等の静的ファイルがあるかどうかを判断し、あれば静的ファイルを返します。
ない場合はテンプレート階層を用い、リストの上から順に、ファイルがないかどうか探し最初に見つけたテンプレートを使います。
例えば、カテゴリーを選択、表示させようとした場合。

  • 「category-スラッグ名.php」というテンプレートファイルを探す。
  • 「category-スラッグ名.php」ない場合、ID がついたカテゴリーファイル
    「category-カテゴリーID.php」を探す。
  • 「category-カテゴリーID.php」がない場合、「category.php」を探す
  • 「category.php」がない場合、「archive.php」を探す。
  • 「archive.php」がない場合、「index.php」を適用させる。

このように、上から該当するテンプレートファイルを探し、あれば適用、なければ次のステップへ進みます。
違ったデザインにしたいのなら、スラッグ名かID名のついたカテゴリーテンプレートを用意すればOK。

このテンプレートの階層順がどうなっているのか、WorsPress Codexで解説してくれています。

WordPress Codexテンプレート階層の解説

カテゴリだけではなく、投稿記事、固定ページ、アーカイブ、タグ、フロントページ等、どのテンプレートが先に適用されるのかを上記で知ることができます。

WordPressで現在使っているテンプレート名を取得する。

親テーマ、子テーマ等を使用していると今ブラウザ上で見てるファイルはどのテンプレートを使用しているんだろうと疑問に思うことがあります。
その場合の取得方法をメモしておきます。

グローバル変数「$template」に適用されているテンプレートのパスが入っています。

上と下、何が違うのかというと、上はテンプレートファイルに直接書きます。footer.phpやheader.phpに書けばいい。
いらないときはコメントアウトでOKです。
下のコードでもはwp_footerにフックする形で関数が実行されるので、functions.phpに追加する必要があるそうです。

ちなみに下の元ネタはこちらデス。ありがとうございました。