WordPress テーマには、[index.php]、[header.php]、[footer.ph]、[sidebar.php]などの基本的なテンプレートファイル以外にも、用途に合わせて様々な機能を持つテンプレートを実装することができます。
一般的には、投稿記事には[single.php]が適応。
固定ページには[page.php]が適応。
特定のカテゴリーが存在する場合は[category.php]が適応。それがない場合は[archive.php]を探します。またそれもない場合は[index.php]適応されます。
存在しているテンプレートの階層であらかじめ優先順位が決まっていて、WordPressはこの優先順位に従って各記事やカテゴリーに特定のテーマを適応させているワケです。
ちなみにカテゴリー・テンプレート[category.php]は、サイトの中にある特定のカテゴリーリンクをクリックすると時系列順にそのカテゴリーの記事が一覧表示されるようになっています。
最新の記事から一番古い記事まで、タイトル、著者、日付、最終変更時刻、すべてを表示するか抜粋するか表示方法を選択することができます。
さて。
仮に、カテゴリーの中にある記事のスラッグが[blog]でIDが[5]だとします。
WordPress は現在のテーマディレクトリにある次のリストから順にテンプレートファイルを見つけて使用します。
- category-slug.php
- category-ID.php
- category.php
- archive.php
- index.php
この場合、WordPress は最初に[category-blog.php]を探し、もしそれがなければ[category-5.php]があるかをチェックし、それもなければ[category.php]というように上から順番に優先されて読み込み、最終的には[index.php]が適応されます。
[category.php]を変更した場合、カテゴリーページ全体に反映され、[archive.php]を変更した場合、日付や作成者のアーカイブすべてに反映されます。
特定のカテゴリー、例えば[blog]というカテゴリの表示方法だけ変更したい場合は、一度[category.php]を複製し、名前を[category-blog.php]に変更し、そのファイルに修正を加えます。
以下は[category-blog.php]の中のデータの一例です。
<?php get_header(); ?> <?php get_sidebar(); ?> <div id="content" role="main"> <h2>この投稿は[category-blog.php]を読み込んでいます。</h2> /* ここにループ処理を書く */ </div> <?php get_footer(); ?>
このファイルを読み込ませるために、カテゴリースラッグが[blog]の記事を作ります。
この方法を使えば特定のカテゴリーリストの表示の際に飲み、ページ構造やデザインを変えることができます。
同様に、カテゴリーの ID で分岐するにはテーマファイル名を[category-5.php]にすればOK。
以上。
特定のカテゴリーに対応させるテンプレートファイルを作る方法でした。