WordPressのテーマをカスタマイズするときに知っておきたいのが、テンプレート階層です。テンプレート階層とは、テンプレートファイルを出力する際の優先順位を指します。具体例をあげて解説します。
WordPressのテンプレート階層とは
WordPressのテンプレート階層を一言で表すと、「テンプレートファイルを出力する際の優先順位を定めたルール」です。
WordPressでは、表示を要求されたページのURLからページの種類を判断し、その種類に応じてどのテンプレートファイルを使うかを優先順位にしたがって決定します。この優先順位となるのがテンプレート階層です。
テンプレート階層を理解するための具体例
あなたが今ご覧になっているこのページ「テンプレート階層の基本とテーマのカスタマイズ」には、どうやってたどり着きましたか?
Yahoo!やGoogleの検索結果から来られたのでしょうか?それとも、このサイト内の別のページからですか?あるいは、ブックマークしていただいてたのでしょうか…?
いずれの方法にしても、あなたはブラウザを通じて
「URL:https://wp-exp.com/blog/template-hierarchy/を表示しなさい」
と要求をしていることになります。
その要求は、当サイトのコンテンツを管理するWordPressというシステムに伝わります。このときWordPressは、そのURLから「ページの種類」を判断します。
- ページの種類とは
- ページの種類には、ブログ投稿・固定ページ・アーカイブページ・検索結果ページなどがあります。その他にも“ページの種類”として定義されているものは、先ほど紹介した概観図で背景が黒色のものが該当します。
具体例に話を戻しましょう。今ご覧のページ「テンプレート階層の基本とテーマのカスタマイズ」は、管理画面メニューの[投稿]>[新規投稿]で作成しています。つまり、“ページの種類”として定義されているもののうち、「ブログ投稿」に該当します。

概観図で、「ブログ投稿」から右に進むと次のように書かれています。
- single-post.php
- single.php
- singular.php
- index.php
下図の赤枠で囲んでいる部分です。クリックすると拡大表示できます。

「ブログ投稿」の表示を要求されたWordPressは、この順番でテーマ内のテンプレートファイルを探します。
もし、使用しているテーマ内に、上記4つのテンプレートファイルのうちindex.phpとsingle.phpとが存在する場合、投稿の表示には、より優先順位の高いsingle.phpの内容が出力されるのです。
テーマをカスタマイズするにはテンプレート階層を意識する
ここまで、ページの種類によって出力されるテンプレートファイルが異なることがわかりました。
なので、テーマをカスタマイズする場合は、どの種類のページを修正しようとしていて、かつ、どのテンプレートファイルを編集すればいいのかを知る必要がある。つまりテンプレート階層を意識する必要があるというわけです。
概観図からも分かるように、全てのページをindex.php(概観図の右端)1つだけで出力することもできます。しかし、多くのWordPressテーマでは、管理や編集をよりかんたんにするために複数のテンプレートファイルが含まれているのです。
テンプレートファイルの役割
テーマの中に含まれるテンプレートファイルは、レイアウト・デザイン・表示内容などをページの種類ごとに変更する役割があります。したがって、もしあなたが使っているテーマに大量のテンプレートファイルがあるとすれば、必ずしも全部必要というわけではありません。
例えば、あなたのサイトに検索フォームを設置していないなら「search.php」は必要ありませんし、投稿にタグを全く設定していないなら「tag.php」は不要です。
テーマからテンプレートファイルを削除する際には、バックアップしておきましょう。