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
があっても、ブログ一覧には影響しません。 - 子テーマで特定のテンプレートだけ差し替えられますか?
-
はい。子テーマに該当ファイルを置くだけで、親テーマより優先されます。
まとめ
テンプレート階層を理解すれば、意図した場所にだけカスタマイズを適用でき、テーマ開発やサイト改修が格段に効率化します。まずは front‑page.php
と single.php
など主要ファイルを用意し、必要に応じてより具体的なテンプレートを追加していきましょう。
この記事が、WordPress テンプレート階層を学ぶ手助けになれば幸いです。