WordPressのテンプレート階層を分かりやすく解説

WordPressのテンプレート階層を分かりやすく解説

WordPressのテンプレート階層を分かりやすく解説

WordPressには「テンプレート階層(Template Hierarchy)」というルールがあり、URLごとに最適なテンプレートファイルを自動で探して読み込みます。この記事では、クラシックテーマ(PHP テンプレート)を前提に、テンプレート階層の仕組みと実際の優先順位を、例を交えて丁寧に解説します。

目次

テンプレート階層とは?

テンプレート階層とは、WordPress が「どのテンプレートファイルを使うか」を決定する探索順序のことです。たとえば投稿ページなら single.php、カテゴリーなら category.php など、より具体的なファイルがあればそれを優先し、無ければより汎用的なファイルへフォールバックします。最終的にどのケースでも index.php が最後の受け皿になります。
※フォールバック:障害が発生した際に、性能や機能を制限したり、別の方式や系統に切り替えること

階層の大原則

  1. より固有・具体的なファイルが最優先
  2. 存在しない場合は汎用的なファイルへフォールバック
  3. 子テーマがある場合は子テーマ → 親テーマの順に探索

フロントページ & ブログホーム

表示タイプ優先順位
サイトのフロントページfront-page.phphome.phpindex.php
投稿一覧(ブログホーム)home.phpindex.php

「設定 > 表示設定」でフロントページに固定ページを指定している場合でも、front-page.php があれば必ず最優先されます。

投稿・固定ページ・添付ファイル

投稿(single)

single-{post_type}.phpsingle.phpsingular.phpindex.php

  • 標準投稿なら single.php
  • カスタム投稿タイプ movie なら single-movie.php が最優先。

固定ページ(page)

page-{slug}.phppage-{ID}.phppage.phpsingular.phpindex.php

たとえばスラッグが about のページは page-about.php があればそれが読み込まれます。

添付ファイル(attachment)

{MIMEタイプ}.php(例:image.php, video.php) → attachment.phpsingle-attachment.php(現在ではあまり使用されないが、互換性あり) → singular.phpindex.php

single-attachment.php は以前のテーマ構造で使われることがありましたが、現在では attachment.php が推奨されています。ただし、テーマ内に存在すれば引き続き有効です。

アーカイブ系

カテゴリー

category-{slug}.phpcategory-{ID}.phpcategory.phparchive.phpindex.php

タグ

tag-{slug}.phptag-{ID}.phptag.phparchive.phpindex.php

カスタムタクソノミー

taxonomy-{taxonomy}-{term}.phptaxonomy-{taxonomy}.phptaxonomy.phparchive.phpindex.php

投稿タイプアーカイブ

archive-{post_type}.phparchive.phpindex.php

その他アーカイブ

  • 作者:author-{nicename}.phpauthor-{ID}.phpauthor.phparchive.phpindex.php
  • 日付:date.phparchive.phpindex.php

検索結果・404

  • 検索結果:search.phpindex.php
  • 404 Not Found:404.phpindex.php

階層の確認方法

  1. Query Monitor などのプラグインを使う:ロードされたテンプレートを即時表示。
  2. テーマ内で get_template_part() を活用し、テンプレート名をコメント出力。
  3. 開発環境で WP_DEBUG を有効化し、読み込まれたファイルをログで確認。

ブロックテーマとの違いは?

WordPress 5.9 以降は ブロックテーマ が登場し、index.htmltemplate-parts など HTML ベース のテンプレート階層が追加されました。ただしクラシックテーマの PHP 階層も引き続きサポートされています。移行中のサイトは「どちらのテーマ構造か」をまず確認しましょう。

WordPressテンプレート階層と主要ファイル解説|クラシック&ブロックテーマ対応

よくある質問(FAQ)

singular.php は必須ですか?

必須ではありませんが、投稿と固定ページを同じデザインでまとめて制御したいときに便利です。

home.php が無いとき、ブログ一覧はどうなりますか?

home.php が無ければ index.php が使われます。front-page.php があっても、ブログ一覧には影響しません。

子テーマで特定のテンプレートだけ差し替えられますか?

はい。子テーマに該当ファイルを置くだけで、親テーマより優先されます。

まとめ

テンプレート階層を理解すれば、意図した場所にだけカスタマイズを適用でき、テーマ開発やサイト改修が格段に効率化します。まずは front‑page.phpsingle.php など主要ファイルを用意し、必要に応じてより具体的なテンプレートを追加していきましょう。
この記事が、WordPress テンプレート階層を学ぶ手助けになれば幸いです。

WordPress開発に必須!PHPのincludeとrequireの違いと使い分けを徹底解説【エラー例付き】

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次