WordPressのテンプレート階層を分かりやすく解説
WordPressには「テンプレート階層(Template Hierarchy)」というルールがあり、URLごとに最適なテンプレートファイルを自動で探して読み込みます。この記事では、クラシックテーマ(PHP テンプレート)を前提に、テンプレート階層の仕組みと実際の優先順位を、例を交えて丁寧に解説します。
テンプレート階層とは?
テンプレート階層とは、WordPress が「どのテンプレートファイルを使うか」を決定する探索順序のことです。たとえば投稿ページなら single.php、カテゴリーなら category.php など、より具体的なファイルがあればそれを優先し、無ければより汎用的なファイルへフォールバック※します。最終的にどのケースでも index.php が最後の受け皿になります。
※フォールバック:障害が発生した際に、性能や機能を制限したり、別の方式や系統に切り替えること
階層の大原則
- より固有・具体的なファイルが最優先
- 存在しない場合は汎用的なファイルへフォールバック
- 子テーマがある場合は子テーマ → 親テーマの順に探索
フロントページ & ブログホーム
| 表示タイプ | 優先順位 |
|---|---|
| サイトのフロントページ | front-page.php → home.php → index.php |
| 投稿一覧(ブログホーム) | home.php → index.php |
「設定 > 表示設定」でフロントページに固定ページを指定している場合でも、front-page.php があれば必ず最優先されます。
投稿・固定ページ・添付ファイル
投稿(single)
single-{post_type}.php → single.php → singular.php → index.php
- 標準投稿なら
single.php。 - カスタム投稿タイプ
movieならsingle-movie.phpが最優先。
固定ページ(page)
page-{slug}.php → page-{ID}.php → page.php → singular.php → index.php
たとえばスラッグが about のページは page-about.php があればそれが読み込まれます。
添付ファイル(attachment)
{MIMEタイプ}.php(例:image.php, video.php) → attachment.php → single-attachment.php(現在ではあまり使用されないが、互換性あり) → singular.php → index.php
single-attachment.php は以前のテーマ構造で使われることがありましたが、現在では attachment.php が推奨されています。ただし、テーマ内に存在すれば引き続き有効です。
アーカイブ系
カテゴリー
category-{slug}.php → category-{ID}.php → category.php → archive.php → index.php
タグ
tag-{slug}.php → tag-{ID}.php → tag.php → archive.php → index.php
カスタムタクソノミー
taxonomy-{taxonomy}-{term}.php → taxonomy-{taxonomy}.php → taxonomy.php → archive.php → index.php
投稿タイプアーカイブ
archive-{post_type}.php → archive.php → index.php
その他アーカイブ
- 作者:
author-{nicename}.php→author-{ID}.php→author.php→archive.php→index.php - 日付:
date.php→archive.php→index.php
検索結果・404
- 検索結果:
search.php→index.php - 404 Not Found:
404.php→index.php
階層の確認方法
- Query Monitor などのプラグインを使う:ロードされたテンプレートを即時表示。
- テーマ内で
get_template_part()を活用し、テンプレート名をコメント出力。 - 開発環境で
WP_DEBUGを有効化し、読み込まれたファイルをログで確認。
ブロックテーマとの違いは?
WordPress 5.9 以降は ブロックテーマ が登場し、index.html や template-parts など HTML ベース のテンプレート階層が追加されました。ただしクラシックテーマの PHP 階層も引き続きサポートされています。移行中のサイトは「どちらのテーマ構造か」をまず確認しましょう。
WordPressテンプレート階層と主要ファイル解説|クラシック&ブロックテーマ対応
よくある質問(FAQ)
singular.phpは必須ですか?-
必須ではありませんが、投稿と固定ページを同じデザインでまとめて制御したいときに便利です。
home.phpが無いとき、ブログ一覧はどうなりますか?-
home.phpが無ければindex.phpが使われます。front-page.phpがあっても、ブログ一覧には影響しません。 - 子テーマで特定のテンプレートだけ差し替えられますか?
-
はい。子テーマに該当ファイルを置くだけで、親テーマより優先されます。
レバテックキャリア徹底解説:ITエンジニア転職成功の秘訣と評判
まとめ
テンプレート階層を理解すれば、意図した場所にだけカスタマイズを適用でき、テーマ開発やサイト改修が格段に効率化します。まずは front‑page.php と single.php など主要ファイルを用意し、必要に応じてより具体的なテンプレートを追加していきましょう。
この記事が、WordPress テンプレート階層を学ぶ手助けになれば幸いです。








