WordPressのテーマをカスタマイズするときのポイントとして、テンプレート階層を考慮するという点があります。しかし、テンプレート階層によるテーマのカスタマイズには、デメリットもあります。
テンプレート階層によるテーマのカスタマイズとは
テンプレート階層とは、ページの種類によって出力されるテンプレートファイルの優先順位です。
ページの種類とは、メインページ、カテゴリーページ、タグページなどのことです。またテンプレートファイルとは、テーマの中に含まれるindex.php、category.php、tag.php などを意味しています。
テンプレート階層によるテーマのカスタマイズについて、具体例を挙げてみましょう。
例えば、スポーツに関するサイトで、次のカテゴリーを作成しているとします。
- 野球
- サッカー
- テニス
これらのカテゴリーアーカイブページで、それぞれ下のように異なる画像を表示をさせるためのカスタマイズを考えてみましょう。
- 野球カテゴリーアーカイブページ:野球関連の画像
- サッカーカテゴリーアーカイブページ:サッカー関連の画像
- テニスカテゴリーアーカイブページ:テニス関連の画像
- カテゴリーアーカイブページとは
- 特定のカテゴリーに属している投稿の一覧を表示するページです。例えば、当サイトのプラグインカテゴリーのアーカイブページはこちらです。
1.カテゴリーアーカイブページのテンプレート階層を考える
テンプレート階層の基本とテーマのカスタマイズでもご紹介しているように、カテゴリーアーカイブページのテンプレート階層は次のとおりです。
- category-slug.php
- category-ID.php
- category.php
- archive.php
- index.php
WordPressでは、カテゴリーアーカイブページを表示するとき、テーマの中に上記1~5の順でファイルを探します。category-slug.phpが無ければcategory-ID.phpを探し、それも無ければcategory.phpを探すという具合です。
1.のslug(スラッグ)とは、カテゴリーに対して与えられる文字列です。くわしくは、用語集 – WordPress Codex 日本語版を参考にしてください。また、2.のIDとは、カテゴリーに対して自動的に割り当てられる数字です。
つまり、先ほど例に挙げたスポーツに関するサイトのテーマの中にcategory.phpはあるがcategory-slug.phpやcategory-ID.phpが無ければ、それを新たに作成することでカテゴリーアーカイブページごとに異なる表示をさせることができます。
2.カテゴリーごとのスラッグあるいはIDを確認する
スポーツに関するサイトでそれぞれのカテゴリーに対し、スラッグとIDが次のように割り当てているとします。
野球カテゴリー | スラッグ:baseball ID:1 |
---|---|
サッカーカテゴリー | スラッグ:soccer ID:2 |
テニスカテゴリー | スラッグ:tennis ID:3 |
これら3つのカテゴリーに対して、テンプレート階層で優先順位の高いcategory-slug.phpを作成する手順は次のとおりです。
- テーマのディレクトリ(フォルダ)から、category.phpをダウンロード
- category.phpを必要な数(今回の例では3つ)だけコピーし、ファイル名を変更
- 野球カテゴリー:category-baseball.php
- サッカーカテゴリー:category-soccer.php
- テニスカテゴリー:category-tennis.php
- category.phpを、テーマのディレクトリ(フォルダ)にアップロード
category-ID.phpを作成するのであれば、上記手順2のファイル名でbaseballを1に、soccerを2に、tennisを3に変更します。
テンプレート階層によるテーマカスタマイズのデメリット
今回の例では、テンプレート階層によってカスタマイズした結果、カテゴリーアーカイブページに関するファイルは元々あったcategory.phpを含めて下記の4つになりました。
- category.php
- category-baseball.php
- category-baseball.php
- category-tennis.php
さて、もしその後にカテゴリーアーカイブページ全てに共通するカスタマイズを施したくなったとしたらどうでしょうか?
答えは・・・。4つのカテゴリーアーカイブページに関するファイルを全て修正しなければなりません。この数が増えれば増えるほど、面倒な作業になってしまいます。これが、今回お伝えしたかったデメリットです。
こうしたテンプレート階層によるテーマカスタマイズのデメリットを回避するために、Wordpressの『条件分岐タグ』というものを使う方法があります。くわしくは、下記ページを参考にしてください。