WordPressのテンプレート階層|優先順位一覧
この記事でわかること
- 表示したいページに合わせて、作るべきテンプレートファイルを選べる
- テンプレートの変更が反映されないとき、原因を見つけて直せる
- ページ単位・分類単位で、デザインを変える方法を判断できる
WordPressのテーマを自作していると、「page.phpを編集したのに反映されない」という場面によく出会います。原因の多くは、実際にどのファイルが使われているかを把握できていないことです。
テンプレート階層を知れば、ページごとに作るべきファイルを迷わず選べるようになります。
編集が反映されないときは、もっと優先されるファイルがないか疑ってみてね!
テンプレート階層の全体像
作りたいページが決まっている場合は、次の表から作るファイルと解説箇所を探せます。
| やりたいこと | 作るファイル | 解説 |
|---|---|---|
| トップページを変える | front-page.php |
トップページと投稿ページ |
| 記事一覧ページを変える | home.php |
トップページと投稿ページ |
| 特定の固定ページを変える | page-{スラッグ}.php |
固定ページ |
| 記事ページを変える | single.php・single-{投稿タイプ}.php |
記事ページ |
| カテゴリー一覧を変える | category.php |
一覧ページ |
| 独自の分類の一覧を変える | taxonomy-{タクソノミー}.php |
一覧ページ |
| カスタム投稿の一覧を変える | archive-{投稿タイプ}.php |
一覧ページ |
| 検索結果を変える | search.php |
検索結果と404ページ |
テンプレート階層は、表示するページの種類に応じて、WordPressがテーマフォルダからファイルを探す順番のルールです。名前が具体的なファイルから順に探し、最初に見つかったファイルを使います。どれも見つからなければ、最後は index.php が使われます。
この記事は、すべてのページに共通する探し方のルールを押さえてから、ページの種類ごとの順番を確認できるように並べています。初めての人は、目次の順に読み進めてください。
テンプレートが選ばれるルール
ページの種類ごとに順番は違いますが、探し方のルールはすべて共通です。まずはこのルールと、ファイル名に入る言葉の意味を押さえましょう。
具体的なファイルほど優先される
例えばカテゴリー一覧なら、特定のカテゴリー専用のファイル、カテゴリー共通のファイル、一覧ページ共通のファイルの順に探します。対象の範囲が狭いファイルほど優先され、見つかった時点でそれより下のファイルは使われません。
index.php は、すべてのページの最後の受け皿です。テーマに必ず必要なのは index.php だけで、ほかのファイルは必要なものだけ作れば問題ありません。
ファイル名の{スラッグ}・{ID}・{投稿タイプ}
ファイル名の { } の部分には、対象のページや分類に合わせた言葉が入ります。
| 部分 | 入るもの | 例 |
|---|---|---|
| {スラッグ} | ページやカテゴリーごとに付けた、URL用の名前 | スラッグがabout → page-about.php |
| {ID} | WordPressが自動で振る番号 | IDが6 → page-6.php |
| {投稿タイプ} | 投稿の種類の名前。通常の投稿は post、カスタム投稿タイプ※1は登録した名前 | 投稿タイプがnews → single-news.php |
特定のページだけを指定したいときは、スラッグとIDのどちらでも指定できます。スラッグのほうが優先されるため、両方あるときはスラッグのファイルが使われます。
| 指定のしかた | 向いている場面 |
|---|---|
スラッグ(page-about.php) |
ファイル名を見ただけで、どのページ用かわかるようにしたいとき |
ID(page-6.php) |
スラッグをあとから変える可能性があるとき |
あとから見返したときにわかりやすいのは、スラッグで作ったファイルだよ!
※1:カスタム投稿タイプ…「お知らせ」「実績」など、標準の投稿とは別に作った投稿の種類。
トップページと投稿ページ
トップページに使われるファイルは、管理画面の「設定」→「表示設定」にある「ホームページの表示」で変わります。「最新の投稿」と「固定ページ」のどちらを選んでいるか、先に確認しましょう。
トップページ
「最新の投稿」の場合
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | front-page.php |
設定に関係なく最優先 |
| 2 | home.php |
記事一覧用のファイル |
| 3 | index.php |
「固定ページ」の場合
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | front-page.php |
設定に関係なく最優先 |
| 2 | カスタムテンプレート | 固定ページの編集画面で選んだテンプレート |
| 3 | page-{スラッグ}.php |
例:page-top.php |
| 4 | page-{ID}.php |
例:page-2.php |
| 5 | page.php |
|
| 6 | singular.php |
|
| 7 | index.php |
front-page.php がない場合、トップページに選んだ固定ページは、通常の固定ページと同じ順番で探されます。front-page.php を作ると、表示設定に関係なく、トップページはこのファイルで表示されます。
投稿ページ(記事一覧)
「固定ページ」を選んだ場合、記事の一覧は「投稿ページ」に指定した固定ページに表示されます。投稿ページは固定ページの順番ではなく、次の順で探されます。
| 順番 | ファイル名 |
|---|---|
| 1 | home.php |
| 2 | index.php |
home.php は「トップページ用」ではなく「記事一覧用」のファイルです。「最新の投稿」の設定ではトップページに記事一覧が出るため、トップページにも使われます。名前から混同しやすいので注意しましょう。
home.phpを作ったのにトップに出ないときは、まず表示設定を見てみてね!
固定ページ
会社概要やお問い合わせなど、固定ページのファイルの探し方です。特定のページだけデザインを変える方法が多く用意されています。
固定ページの優先順位
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | カスタムテンプレート | 固定ページの編集画面で選んだテンプレート |
| 2 | page-{スラッグ}.php |
例:page-about.php |
| 3 | page-{ID}.php |
例:page-6.php |
| 4 | page.php |
固定ページ共通 |
| 5 | singular.php |
固定ページと記事ページ共通 |
| 6 | index.php |
カスタムテンプレートは、固定ページの編集画面で選ぶテンプレートです。選んでいる場合は、スラッグやIDのファイルより優先されます。
会社概要など1ページだけ見た目を変えたいときは、page-{スラッグ}.phpが手軽だよ!
プライバシーポリシーページ
「設定」→「プライバシー」で指定したページは、固定ページの順番より前に privacy-policy.php が探されます。このファイルがなければ、通常の固定ページと同じ順番で探されます。
記事ページ(個別投稿)
投稿やカスタム投稿タイプの、1件ずつの記事ページの探し方です。投稿タイプごとにデザインを分けられます。
記事ページの優先順位
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | カスタムテンプレート | 記事の編集画面で選んだテンプレート |
| 2 | single-{投稿タイプ}-{スラッグ}.php |
例:single-news-sample.php |
| 3 | single-{投稿タイプ}.php |
例:single-news.php |
| 4 | single.php |
記事ページ共通 |
| 5 | singular.php |
固定ページと記事ページ共通 |
| 6 | index.php |
通常の投稿は投稿タイプ名が post のため、投稿専用のファイルは single-post.php になります。テーマにテンプレートが用意されていれば、投稿でも編集画面からテンプレートを選べます(WordPress 4.7以降)。
singular.phpとの使い分け
singular.php は、固定ページと記事ページの両方で、index.php の直前に探されるファイルです。2種類のページをどこまで分けるかで、作り方を選びます。
| 作り方 | 向いている場面 |
|---|---|
single.php と page.php を分ける |
記事ページと固定ページで、デザインが違うとき |
singular.php 1つにまとめる |
記事ページも固定ページも、同じデザインでよいとき |
最初はsingular.phpにまとめて、違いが出てきたら分けるのもアリだよ!
一覧ページ(アーカイブ)
カテゴリーやタグ、投稿タイプごとの一覧は、どれも archive.php を経て index.php へ進みます。一覧ページ共通のデザインは archive.php に書き、違いがある一覧だけ専用のファイルを作ると管理しやすくなります。
カテゴリー
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | category-{スラッグ}.php |
例:category-news.php |
| 2 | category-{ID}.php |
例:category-6.php |
| 3 | category.php |
カテゴリー一覧共通 |
| 4 | archive.php |
一覧ページ共通 |
| 5 | index.php |
タグ
タグの一覧は、カテゴリーと同じ形で探されます。
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | tag-{スラッグ}.php |
例:tag-wordpress.php |
| 2 | tag-{ID}.php |
例:tag-6.php |
| 3 | tag.php |
タグ一覧共通 |
| 4 | archive.php |
一覧ページ共通 |
| 5 | index.php |
カスタムタクソノミー
独自に作った分類であるカスタムタクソノミー※2の一覧は、カテゴリーやタグと形が異なります。ファイル名には、タクソノミー名とターム※3名の2つが入ります。
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | taxonomy-{タクソノミー}-{ターム}.php |
例:taxonomy-genre-event.php |
| 2 | taxonomy-{タクソノミー}.php |
例:taxonomy-genre.php |
| 3 | taxonomy.php |
カスタムタクソノミー共通 |
| 4 | archive.php |
一覧ページ共通 |
| 5 | index.php |
カスタムタクソノミーには、IDで指定するファイルがありません。特定のタームだけ見た目を変えたいときは、ターム名で指定します。
| 分類 | 専用ファイルの形 | IDでの指定 |
|---|---|---|
| カテゴリー | category-{スラッグ}.php |
できる |
| タグ | tag-{スラッグ}.php |
できる |
| カスタムタクソノミー | taxonomy-{タクソノミー}-{ターム}.php |
できない |
taxonomy-の後ろは「タクソノミー名-ターム名」の順だよ。逆にしないように気をつけてね
※2:タクソノミー…投稿を分類するための仕組み。標準のカテゴリーやタグもその一種です。
※3:ターム…タクソノミーの中の、1つ1つの分類。例えば「ジャンル」というタクソノミーの中の「イベント」がタームです。
カスタム投稿タイプの一覧
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | archive-{投稿タイプ}.php |
例:archive-news.php |
| 2 | archive.php |
一覧ページ共通 |
| 3 | index.php |
一覧から開く1件ずつの記事ページは、single- から始まるファイルで探されます(記事ページの優先順位)。
投稿者・日付の一覧
投稿者
| 順番 | ファイル名 | 補足 |
|---|---|---|
| 1 | author-{ニックネーム}.php |
URLに使われるユーザー名。例:author-sample.php |
| 2 | author-{ID}.php |
例:author-2.php |
| 3 | author.php |
投稿者一覧共通 |
| 4 | archive.php |
一覧ページ共通 |
| 5 | index.php |
日付
| 順番 | ファイル名 |
|---|---|
| 1 | date.php |
| 2 | archive.php |
| 3 | index.php |
検索結果と404ページ
どちらも専用のファイルがなければ、すぐに index.php が使われます。間にほかの候補はありません。
検索結果
| 順番 | ファイル名 |
|---|---|
| 1 | search.php |
| 2 | index.php |
サイト内検索の結果だけ見た目を変えたいときは、search.php を作ります。
404ページ
| 順番 | ファイル名 |
|---|---|
| 1 | 404.php |
| 2 | index.php |
404ページは、存在しないURLにアクセスしたときに表示されるページです。404.php がないと index.php で表示されるため、ページが見つからないことが読者に伝わりにくくなります。
404.phpには、トップページへのリンクを置いておくと親切だよ!
つまずきやすいポイント
ファイル名や置き場所によっては、順番どおりに作ったつもりでも、思ったファイルが使われないことがあります。よくある2つのケースを確認しましょう。
日本語スラッグのファイル名
スラッグに日本語を使っている場合、ファイル名は日本語のままの形と、URL用に変換(エンコード)した形のどちらでも使えます(WordPress 4.7以降)。両方あるときは、日本語のままの形が先に探されます。
| 形 | ファイル名の例(スラッグ「会社概要」の固定ページ) |
|---|---|
| 日本語のまま | page-会社概要.php |
| エンコードした形 | page-%e4%bc%9a%e7%a4%be%e6%a6%82%e8%a6%81.php |
ファイル名で迷わないように、スラッグは英数字にしておくのがおすすめだよ
子テーマを使うときの優先順位
子テーマ※4に置いたファイルは、親テーマにある同じ名前のファイルより優先されます。ただし、テンプレート階層の順番のほうが先に判断されるため、親テーマにより具体的なファイルがあると、そちらが使われます。
| 子テーマのファイル | 親テーマのファイル | 使われるファイル |
|---|---|---|
category.php |
category.php |
子テーマの category.php |
category-news.php |
category.php |
子テーマの category-news.php |
category.php |
category-news.php |
親テーマの category-news.php |
※4:子テーマ…親テーマのデザインや機能を引き継ぎつつ、変えたい部分だけを上書きするためのテーマ。
さいごに
まとめ
テンプレート階層は「具体的なファイルから探し、なければ汎用のファイルへ進み、最後は index.php」という1つのルールでできています。
テンプレート階層の要点
- トップページは、表示設定によって探す順番が変わる
- home.php は、トップページ用ではなく記事一覧用のファイル
- カテゴリー・タグはIDでも指定できるが、カスタムタクソノミーはできない
思いどおりのファイルが使われないときは、この記事の表で、より優先されるファイルがないか確認してみてください。テーマ制作で使うPHPの全体像は「初心者向けWordPressのPHP|よく使う関数まとめ」で紹介しています。
よくある質問
page.phpを編集したのに、固定ページに反映されません
page.php より優先されるファイルが使われている可能性があります。次の点を確認しましょう。
- 編集画面でカスタムテンプレートを選んでいないか(固定ページの優先順位)
- page-{スラッグ}.php や page-{ID}.php がテーマにないか(固定ページの優先順位)
- トップページの場合、front-page.php がないか(トップページ)
home.phpを作ったのに、トップページに使われません
home.php は記事一覧用のファイルです。表示設定で「固定ページ」を選んでいる場合、home.php は投稿ページに使われ、トップページには使われません。また、front-page.php があると、そちらが優先されます。
投稿ページの探し方は「投稿ページ(記事一覧)」で解説しています。
カスタムタクソノミーを、IDで指定するファイルは作れますか?
いいえ、作れません。カスタムタクソノミーは、カテゴリーやタグと違ってIDで指定するファイルがないため、ターム名で指定します。
ファイル名の形は「カスタムタクソノミー」で解説しています。
index.php以外のファイルも、すべて作る必要がありますか?
いいえ。テーマに必ず必要なのは index.php だけです。ほかのファイルは、デザインを分けたいページの分だけ作れば問題ありません。
探し方のルールは「具体的なファイルほど優先される」で解説しています。
子テーマにcategory.phpを置いたのに、使われません
親テーマに category-{スラッグ}.php など、より具体的なファイルがある可能性があります。テンプレート階層の順番が先に判断されるため、親テーマの具体的なファイルが優先されます。
詳しくは「子テーマを使うときの優先順位」で解説しています。
参考にした公式情報
どのページも英語ですが、ブラウザの翻訳機能を使えば日本語で読めます。

