
WordPressのオリジナルテーマ制作に挑戦していると
「投稿ページでsingle.phpを作ったのに、表示されない。」
「category.phpを作ったら、画面が真っ白になった。」
そんな経験はありませんか?
私も何度も、ここでつまずきました。
原因は、WordPressの「テンプレート階層(優先順位)」という仕組みにあります。
せっかく作ったファイルをいくら編集しても、他にもっと優先順位の高いファイルがフォルダ内にあると、WordPressはそちらを先に読み込んでしまいます。
この記事では、初心者の方が迷いがちなテンプレート階層の仕組みを分かりやすく整理しました。

覚えなきゃいけないファイルがいっぱいあって大変そう…

画面が真っ白になっても最後には必ず受け止めてくれる「index.php」という強い味方がいるから大丈夫!
こんな方にオススメ
- WordPressのオリジナルテーマ制作に挑戦している方
- single.php や category.php が表示されず悩んだ経験がある方
- テンプレート階層の仕組みをきちんと理解したい方
- 画面が真っ白になって不安になった方
この記事でわかること
- テンプレート階層の基本的な仕組み
- 各ページごとの優先順位
- テンプレートが反映されないときの対処法
- 現在読み込まれているテンプレートを確認する方法
テンプレート階層とは?
WordPressがページを表示する際に、テーマ内のどのファイルを使うかを自動で判断するページ表示の優先順位表のことです。
ページの種類ごとにあらかじめ順番が決まっています。
WordPressはこの優先順位に従って、テーマ内のファイルを上から順番に探していきます。
もっと詳しく、全てのページの順番を知りたいという方は、WordPressの公式ドキュメントをチェックしてみてください。
ページごとに使われるテンプレートファイル
トップページ
トップページのテンプレート階層の優先順位は以下の通りです。
❶ front-page.php →トップページに第一優先で適用されるテンプレートファイル
❷ home.php → front-page.phpがない場合に適用されるテンプレートファイル
❸ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル


私は、トップページで front-page.phpを使ったので、
home.php でお知らせ一覧を作成しています。

投稿ページ
投稿ページのテンプレート階層の優先順位は以下の通りです。
❶ single-post_type.php →カスタム投稿の個別記事を表示させるテンプレートファイル
❷ single.php →通常投稿を表示させるテンプレートファイル
❸ singular.php →投稿と固定ページを同じレイアウトにしたい場合に使うテンプレートファイル
❹ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル


実は私、「single-blog.php」を 「singl-blog.php」と書いて、「正しいはずなのに、なんで反映されないの?」とパソコンの前で固まってしまいました。(スペルが違う)

single-blog.php(ハイフン)⭕️と single_blog.php(アンダーバー)❌のミスも気をつけるだワン!
固定ページ
固定ページのテンプレート階層の優先順位は以下の通りです。
❶ カスタムテンプレート →特定の固定ページだけに使うテンプレートファイル
❷ page-スラッグ.php →スラッグ(例:contact)の固定ページを表示するテンプレートファイル
❸ page-ID.php →ページごとに割り振られた「数字のID」を使用して、固定ページを表示するテンプレートファイル
❹ page.php →固定ページを表示する基本的なテンプレートファイル
❺ singular.php →投稿と固定ページを同じレイアウトにしたい場合に使うテンプレートファイル
❻ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル


あれ、書き換えたのに変わらない?

古いキャッシュがたまっているかもしれないので、キャッシュクリアをしてみてね!Windows→Ctrl + F5 Mac→Command + Shift + R
カテゴリー一覧ページ
カテゴリー一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ category-スラッグ.php →スラッグ(例:news)のカテゴリーページを表示するテンプレートファイル
❷ category-ID.php →カテゴリー固有の「数字のID」を使用して表示するテンプレートファイル
❸ category.php →カテゴリーページを表示する標準的なテンプレートファイル
❹ archive.php →アーカイブ(一覧ページ)を表示するテンプレートファイル
❺ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

カスタム投稿一覧ページ
カスタム投稿一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ archive-post_type.php →カスタム投稿に一覧を表示するテンプレートファイル
❷ archive.php →専用ファイルがない場合に適用される、一覧ページ(アーカイブ)用の「共通ファイル」カテゴリーやタグの一覧と同じ見た目で良ければ、これ一枚でOK。
❸ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

カスタムタクソノミー一覧ページ
カスタムタクソノミー一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ taxonomy-タクソノミー名-ターム名.php →指定したカスタムタクソノミーとタームの一覧を表示するテンプレートファイル
例:taxonomy-area-fukuoka.phpの場合
「エリア」という分類の中の「福岡」という特定の項目だけデザインを変えたい場合に使用
❷ taxonomy-タクソノミー名.php →指定したカスタムタクソノミーの一覧を表示するテンプレートファイル
例:taxonomy-area.phpの場合
「エリア」ごとにまとめたい場合に使用
❸ taxonomy.php →すべてのカスタムタクソノミーに共通で適用されるテンプレートファイル
一番よく使われます
❹ archive.php →タクソノミー専用ファイルがない場合に適用される、アーカイブ共通(一覧ページ)を表示するテンプレートファイル
❺ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

【超重要】新しいテンプレートが反映されない時は?
カスタム投稿やカスタムタクソノミーを追加した直後は、テンプレートファイルが正しくても表示されないことがあります。
そんな時は、WordPressに「新しいテンプレートができたよ」と教えてあげる必要があります。
タグ一覧ページ
タグ一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ tag-スラッグ.php →スラッグのタグページを表示するテンプレートファイル
❷ tag-ID.php →タグ固有の「数字のID」を使って、タグページを表示するテンプレートファイル
❸ tag.php →タグページを表示する標準的なテンプレートファイル
❹ archive.php →タグ専用のファイルがない場合に、カテゴリーや日付別ページと一緒に一覧表示として表示されるテンプレートファイル
❺ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

作成者一覧ページ
作成者一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ author-ナイスネーム.php →指定したユーザー名のユーザー一覧ページを表示するテンプレートファイル
❷ author-ID.php →ユーザー固有の「数字のID」を使用して、一覧ページを表示するテンプレートファイル
❸ author.php →ユーザー一覧を表示する標準的なテンプレートファイル
❹ archive.php →専用ファイルがない場合にカテゴリーやタグ一覧と同じレイアウトでアーカイブ(一覧ページ)を表示するテンプレートファイル
❺ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

日付別一覧ページ
日付別一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ date.php →日付別に表示するテンプレートファイル
❷ archive.php →専用の date.phpがない場合に、カテゴリーやタグと同じ共通のレイアウトでアーカイブ(一覧ページ)を表示するテンプレートファイル
❸ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

検索結果ページ
検索結果ページのテンプレート階層の優先順位は以下の通りです。
❶ search.php →検索結果を表示するテンプレートファイル
❷ index.php →上記テンプレートファイルが存在しない場合に適用されるテンプレートファイル

404ページ
404ページのテンプレート階層の優先順位は以下の通りです。
❶ 404.php →ページが見つからない時に専用のメッセージを表示させるためのテンプレートファイル
❷ index.php →上記テンプレートファイルが存在しない場合に適用されるテンプレートファイル

表示中のテンプレートを確認する場合
現在表示中のテンプレートを確認したい場合は、プラグイン 「Show Current Template」 がおすすめです。
有効化するだけで、ログイン中のツールバーに使用中のファイル名が表示されます。
どのテンプレート階層が適用されたか確認できます。
表示中のテンプレートを確認する手順




画面上部の 管理バー右側 に現在適用中のテンプレート名が確認できるようになりました。

まとめ|最後に、これだけは押さえたい3つのポイント
WordPressテーマ制作でつまずかないために、覚えておきたいポイントは3つです。
まず、WordPressは「より具体的なファイル」を優先する仕組みになっています。
個別ページ用の single-○○.phpは、共通テンプレートよりも優先して読み込まれます。
次に注意したいのが、ファイル名のハイフン(-)とアンダーバー(_)の違いです。
デザインが反映されない場合や画面が真っ白になった時など、間違っていないか確認してみましょう。

single-news.phpは、⭕️

single_news.phpは、❌
そして、慣れないうちはプラグインを活用して、今どのテンプレートが読み込まれているのかを確認しながら進めるのがおすすめです。
仕組みを理解しながら進めることができます。
自分の思い通りのデザインが表示されたときは、とても嬉しいものです。
もし画面が真っ白になっても、最後には index.phpが表示されるので安心です。

あなただけの理想のサイトを完成させてくださいね
