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

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

画面が真っ白になっても最後には必ず受け止めてくれる「index.php」という強い味方がいるから大丈夫!
こんな方にオススメ
- WordPressのオリジナルテーマ制作に挑戦している方
- single.php や category.php が表示されず悩んだ経験がある方
- テンプレート階層の仕組みをきちんと理解したい方
- 画面が真っ白になって不安になった方
この記事でわかること
- テンプレート階層の基本的な仕組み
- 各ページごとの優先順位
- テンプレートが反映されないときの対処法
- 現在読み込まれているテンプレートを確認する方法
テンプレート階層とは?
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 →スラッグの固定ページを表示するテンプレートファイル
❸ page-ID.php →指定したIDの固定ページを表示するテンプレートファイル
❹ page.php →固定ページを表示するテンプレートファイル
❺ singular.php →投稿と固定ページを同じレイアウトにしたい場合に使うテンプレートファイル
❻ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル


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

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

カスタム投稿一覧ページ
カスタム投稿一覧ページのテンプレート階層の優先順位は以下の通りです。
❶ archive-post_type.php →カスタム投稿に一覧を表示するテンプレートファイル
❷ archive.php →アーカイブ(一覧ページ)を表示するテンプレートファイル
❸ 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 →アーカイブ(一覧ページ)を表示するテンプレートファイル
❸ index.php →上記テンプレートファイルがいずれも存在しない場合に適用されるテンプレートファイル

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

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

表示中のテンプレートを確認する場合
現在表示中のテンプレートを確認したい場合は、プラグイン 「Show Current Template」 がおすすめです。
表示中のテンプレートを確認する手順




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

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

single-news.phpは、⭕️

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

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