WordPressでテーマを編集していると、「index.php」「single.php」「page.php」「home.php」など、似たような名前のファイルがたくさん出てきます。
どのファイルを編集すればトップページが変わるのか、投稿ページはどのファイルで表示されているのか、固定ページはどこを触ればよいのか、最初はかなり分かりにくいです。
このときに理解しておきたいのが、WordPressの「テンプレート階層」です。
テンプレート階層を理解すると、WordPressがページごとにどのテンプレートファイルを読み込んでいるのかが分かります。テーマカスタマイズや子テーマ編集、オリジナルテーマ制作をするうえで必須の知識です。
WordPress公式ドキュメントでも、テンプレートはページ構造を生成する再利用可能なファイルであり、WordPressはURLの情報をもとに読み込むテンプレートを決定すると説明されています。
WordPressテンプレート階層とは
WordPressテンプレート階層とは、アクセスされたページに対して、どのテンプレートファイルを使って表示するかを決める優先順位のことです。
たとえば、ユーザーがブログ記事を開いた場合、WordPressはすぐに「single.phpを使う」と決めるわけではありません。
まず、より具体的なテンプレートファイルがあるかを探します。
たとえば、カスタム投稿タイプが product で、投稿スラッグが sample-item の場合、WordPressは次のような順番でテンプレートを探します。
- single-product-sample-item.php
- single-product.php
- single.php
- singular.php
- index.php
このように、より具体的なファイルから順番に探し、見つからなければ汎用的なファイルへ進んでいきます。
最後まで見つからない場合は、最終的に index.php が使われます。
テンプレート階層を理解するメリット
テンプレート階層を理解すると、WordPressのカスタマイズで迷いにくくなります。
たとえば、次のような判断ができるようになります。
- トップページを変えたいなら front-page.php を確認する
- ブログ一覧を変えたいなら home.php を確認する
- 投稿ページを変えたいなら single.php を確認する
- 固定ページを変えたいなら page.php を確認する
- カテゴリー一覧を変えたいなら category.php を確認する
- 検索結果を変えたいなら search.php を確認する
- 404ページを変えたいなら 404.php を確認する
この判断ができるようになると、「どのファイルを編集すればよいか分からない」という状態から抜け出せます。
WordPressは具体的なテンプレートから探す
テンプレート階層の基本ルールは、具体的なテンプレートから汎用的なテンプレートへ探すことです。
たとえば、カテゴリー「news」の一覧ページを表示する場合、WordPressは次の順番でファイルを探します。
- category-news.php
- category-カテゴリーID.php
- category.php
- archive.php
- index.php
もし category-news.php があれば、そのカテゴリー専用のデザインにできます。
category-news.php がなければ category.php を使い、それもなければ archive.php、それもなければ index.php を使います。
この仕組みによって、WordPressでは「特定のページだけデザインを変える」「カテゴリーごとに表示を変える」「カスタム投稿タイプごとにレイアウトを分ける」といった柔軟なカスタマイズができます。
index.phpは最後の受け皿
WordPressテーマにおいて、index.phpは非常に重要です。
index.phpは、他に該当するテンプレートファイルが見つからなかった場合に使われる最終的なテンプレートです。
たとえば、single.phpがない、page.phpがない、archive.phpがない、search.phpがないという場合でも、index.phpがあればページを表示できます。
そのため、クラシックテーマでは index.php が基本の受け皿になります。
ただし、すべてを index.php だけで作ると、投稿ページ、固定ページ、一覧ページ、検索結果ページの区別がつきにくくなります。
実際のテーマ制作では、必要に応じて以下のようにファイルを分けるのが一般的です。
- 投稿ページ:single.php
- 固定ページ:page.php
- 一覧ページ:archive.php
- 検索結果:search.php
- 404ページ:404.php
- トップページ:front-page.php
- ブログ一覧:home.php
クラシックテーマとブロックテーマの違い
WordPressには、大きく分けてクラシックテーマとブロックテーマがあります。
クラシックテーマでは、テンプレートファイルに .php を使います。
例:
single.php
page.php
archive.php
index.php
ブロックテーマでは、テンプレートファイルに .html を使います。
例:
single.html
page.html
archive.html
index.html
WordPress公式ドキュメントでも、クラシックテーマではPHPファイル、ブロックテーマではHTMLファイルを使用するが、テンプレート階層の考え方は同じと説明されています。
つまり、初心者はまず「どの種類のページで、どのテンプレートが優先されるのか」を理解することが大切です。
ファイル拡張子が .php か .html かは、使っているテーマの種類によって変わります。
テンプレート階層の基本ルール
WordPressテンプレート階層の基本は、次の3つです。
1つ目は、ページの種類によって使われるテンプレート候補が変わることです。
投稿ページなら single.php、固定ページなら page.php、カテゴリー一覧なら category.php というように、ページの種類ごとに候補が異なります。
2つ目は、具体的なファイルが優先されることです。
たとえば、category.php よりも category-news.php のほうが優先されます。これは「全カテゴリー共通のデザイン」よりも「newsカテゴリー専用のデザイン」のほうが具体的だからです。
3つ目は、最後は index.php にたどり着くことです。
どのテンプレートファイルも見つからなかった場合、WordPressは最終的に index.php を使います。
よく使うテンプレートファイル一覧
WordPressでよく使うテンプレートファイルは、次のとおりです。
- index.php
すべての最終的な受け皿になるテンプレートです。 - front-page.php
サイトのトップページに使われるテンプレートです。 - home.php
ブログ記事一覧ページに使われるテンプレートです。 - single.php
投稿の個別ページに使われるテンプレートです。 - page.php
固定ページに使われるテンプレートです。 - archive.php
カテゴリー、タグ、日付、投稿者などの一覧ページに使われる汎用テンプレートです。 - category.php
カテゴリー一覧ページに使われるテンプレートです。 - tag.php
タグ一覧ページに使われるテンプレートです。 - search.php
検索結果ページに使われるテンプレートです。 - 404.php
存在しないURLにアクセスされたときのエラーページに使われるテンプレートです。
初心者が最初に覚えるべきテンプレート
最初からすべてを覚える必要はありません。
初心者がまず覚えるべきテンプレートは、次の6つです。
- index.php
- front-page.php
- home.php
- single.php
- page.php
- archive.php
この6つを理解すれば、WordPressテーマの大まかな構造が分かります。
特に混乱しやすいのが front-page.php と home.php です。
- front-page.php はサイトのトップページです。
- home.php はブログ記事一覧ページです。
名前だけ見ると home.php がトップページのように感じますが、WordPressでは home.php は「ブログ記事一覧」を意味します。ここを間違えると、トップページを編集したいのにブログ一覧が変わってしまう、ということが起きます。
まとめ
WordPressテンプレート階層とは、WordPressが表示するページに応じて、どのテンプレートファイルを使うかを決める優先順位のことです。
基本の考え方は、具体的なテンプレートから探し、見つからなければ汎用的なテンプレートへ進むという流れです。
最終的には index.php が受け皿になります。
初心者はまず、front-page.php、home.php、single.php、page.php、archive.php、index.php の役割を理解しましょう。
この基本を押さえるだけで、WordPressテーマの編集や子テーマカスタマイズで迷うことがかなり減ります。
