WordPress でサイトのデザインを自由に変えるには、テーマ内のテンプレートファイルを編集します。ところが、どのページでどのテンプレートが使われるかは固定ではなく、WordPress が条件に基づいて自動的に選択します。この仕組みを「テンプレート階層」と呼びます。階層を理解すれば、特定のページだけデザインを変えたり、将来の保守を楽にできます。ここでは WordPress 公式ドキュメントを参考に、テンプレート階層と主なテンプレートファイルを初心者向けに解説します。
テンプレート階層とは
Web ブラウザーが WordPress サイトのあるページをリクエストすると、WordPress はまず クエリ文字列を確認し、アクセスされたページの種類を判断します。例えば「検索ページ」「カテゴリーページ」「特定の記事ページ」などです。次に、テンプレート階層の順序に従ってテーマ内のファイルを探し、最初に一致したテンプレートファイルを適用します。特定のテンプレートが見つからない場合はより汎用的なテンプレートへ、最後には index.php
へとフォールバックします。子テーマを使っている場合は子テーマのファイルが親テーマより優先されます。
ポイントは次の通りです。
- WordPress は 最も特定的なファイルから順に探します。ファイル名にスラッグや ID を含むテンプレートがある場合、それが最優先されます。
- 該当ファイルがなければ次の候補へ、最終的には
index.php
になります。 - ブロックテーマの場合は拡張子が
.html
ですが、階層の考え方は同じです。
代表的なクエリタイプとテンプレートの優先順位
公式ドキュメントでは多くのケースが紹介されています。ここでは代表的なページタイプごとに、ファイルが使われる順序をまとめます。より具体的なファイルが存在すればそれが優先され、なければリスト下部の一般的なテンプレートが使われます。

ホームページとフロントページ
サイトのトップページ(ブログ投稿インデックスや固定ページ)には主に次のテンプレートが使われます。
- front‑page.php – 「フロントページの表示」が「最新の投稿」「固定ページ」のどちらでも、存在すれば最優先。
- home.php –
front‑page.php
がない場合にブログ投稿インデックス用に使われます。ブログ投稿を別ページに設定している場合も同じです。 - page.php – フロントページに固定ページを割り当てている場合、
front‑page.php
とhome.php
がなければ使われます。 - index.php – 他のテンプレートがない場合の最終フォールバックです。
投稿(single)
個別投稿ページは次の順にファイルを読み込みます。
- single‑{post‑type}-{slug}.php – 4.4 以降は投稿タイプとスラッグを含むテンプレートが最優先。
- single‑{post‑type}.php – カスタム投稿タイプの個別投稿用。
- single.php – 一般的な投稿用。
- singular.php – 投稿とページ両方で使われる汎用テンプレート。
- index.php – 最終フォールバック。
固定ページ(page)
固定ページ(投稿タイプ page
)のテンプレート優先順位は次の通りです。
- カスタムページテンプレート – 管理画面で割り当てたテンプレート。
- page‑{slug}.php – スラッグ名に対応するテンプレート。
- page‑{id}.php – 固定ページの ID に対応するテンプレート。
- page.php → singular.php → index.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ページ:
404.php
→index.php
- 添付ファイル(attachment): MIMEタイプごとのテンプレート →
attachment.php
→single-attachment-{slug}.php
→single-attachment.php
→single.php
→singular.php
→index.php
- 埋め込み(embed):
embed-{post-type}-{post_format}.php
→embed-{post-type}.php
→embed.php
→ WordPress 内部テンプレート
非 ASCII 文字とフィルター
WordPress 4.7 以降では、テンプレート名に日本語など非 ASCII 文字が含まれる場合、エンコードされたファイル名とエンコードされていないファイル名の両方が使えるようになりました。また、テンプレート階層にはフィルターを通してカスタムテンプレートを追加することも可能です。例えば author_template
フィルターで、投稿者の権限に応じた author-editor.php
を優先するように変更できます。
よく使われるテンプレートファイル一覧
WordPress テーマには多数のテンプレートがありますが、実際によく使われる基本的なファイルは限られています。以下の表では、公式ドキュメントの「Common WordPress template files」に基づき、代表的なテンプレートファイルとその役割を簡潔にまとめています。
テンプレートファイル | 用途 (簡潔な説明) |
---|---|
index.php | もっとも汎用的なテンプレート。すべてのテンプレートの最終フォールバック。 |
style.css | テーマのスタイルシート兼テーマ情報。 |
front‑page.php | サイトのフロントページに常に使用される。 |
home.php | ブログ投稿インデックス (最新の投稿一覧) を表示する。 |
singular.php | single.php や page.php が無い場合に投稿・ページ両方の表示に使う。 |
single.php | 個別投稿の表示。 |
single-{post_type}.php | カスタム投稿タイプの個別投稿を表示。 |
archive-{post_type}.php | カスタム投稿タイプのアーカイブ一覧を表示。 |
page.php | 固定ページの表示。 |
page-{slug}.php | 特定のスラッグを持つ固定ページの表示。 |
category.php | カテゴリーアーカイブの表示。 |
tag.php | タグアーカイブの表示。 |
taxonomy.php | カスタムタクソノミーの表示。 |
author.php | 投稿者アーカイブの表示。 |
date.php | 日付アーカイブの表示。 |
archive.php | 一般的なアーカイブページの表示。 |
search.php | 検索結果ページの表示。 |
attachment.php | 添付ファイルの単独表示。 |
image.php | 画像添付の単独表示。 |
404.php | 404 (Not Found) ページの表示。 |
comments.php | コメントテンプレート。 |
テンプレートパーツ
ページ全体ではなく一部分を管理するテンプレートパーツもあります。代表的なものに header.php
(ヘッダー)、footer.php
(フッター)、sidebar.php
(サイドバー) があり、get_header()
や get_footer()
などのテンプレートタグを使ってテンプレート内で呼び出します。WordPress 公式ドキュメントには get_header()
や get_template_part()
など、具体的な関数の例が載っているので参考にすると良いでしょう。
テンプレート階層を意識したテーマカスタマイズのコツ
- 特定のページだけを変更したい場合は具体的なテンプレートを作成
たとえば特定のカテゴリー用のcategory-news.php
を作れば、そのカテゴリーの記事一覧だけを別デザインにできます。 - ページが見つからない場合は
index.php
が表示される
カスタマイズし忘れてもサイトが白紙になることはありませんが、汎用テンプレートが使われるためデザインが統一されない場合があります。 - 子テーマを活用
テーマを直接編集するとアップデートで上書きされる可能性があります。子テーマにテンプレートを追加すれば親テーマより優先的に使用されるため安全です。 - テンプレートパーツで共通部分を管理
ヘッダーやフッターを別ファイルに切り出すことで、複数のテンプレートから呼び出せます。修正が必要になった場合、パーツを一度編集するだけで済みます。 - フィルターで階層を拡張
特定の条件でテンプレートの優先順位を変更したい場合はフィルターを利用できます。例えばauthor_template
フィルターで投稿者の権限ごとにテンプレートを切り替えることができます。
まとめ
テンプレート階層は「どのテンプレートファイルを使うか」を決める WordPress のルールです。クエリタイプに応じて最適なテンプレートを順番に探し、該当するファイルがなければ汎用的なテンプレートにフォールバックします。よく使われるテンプレートファイルやパーツの役割を理解し、階層の優先順位を意識してファイルを作成すれば、思い通りのデザインで安定したテーマを構築できます。