「このページ、どのファイルを直せばいいの?」——WordPressはURLの種類に応じて決まった順番でテンプレートを探します(テンプレート階層)。よく使うところだけ早見表にまとめました。
共通のルールは1つ——具体的なファイルから探し、無ければ抽象的なファイルへ、最後はindex.phpにたどり着きます。
URLごとの早見表
数字は探す順番です。①から順に見ていって、最初に見つかったファイルが使われます(無ければ次の番号へ)。
| 表示するページ | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| トップページ | front-page.php | home.phpまたはpage.php※ | index.php | |||
| 投稿一覧 | home.php | index.php | ||||
| 投稿の詳細 | single-post.php | single.php | singular.php | index.php | ||
| 固定ページ | 選んだページテンプレート | page-{スラッグ}.php | page-{ID}.php | page.php | singular.php | index.php |
| カテゴリ一覧 | category-{スラッグ}.php | category-{ID}.php | category.php | archive.php | index.php | |
| タグ一覧 | tag-{スラッグ}.php | tag-{ID}.php | tag.php | archive.php | index.php | |
| カスタムタクソノミー | taxonomy-{名前}-{ターム}.php | taxonomy-{名前}.php | taxonomy.php | archive.php | index.php | |
| カスタム投稿タイプの一覧 | archive-{投稿タイプ}.php | archive.php | index.php | |||
| カスタム投稿タイプの詳細 | single-{投稿タイプ}.php | single.php | singular.php | index.php | ||
| 検索結果 | search.php | index.php | ||||
| 404 | 404.php | index.php | ||||
| 日付アーカイブ | date.php | archive.php | index.php | |||
| 投稿者アーカイブ | author.php | archive.php | index.php | |||
| 添付ファイル | attachment.php | single.php | index.php |
※トップページの2番目は、設定「ホームページの表示」が最新の投稿ならhome.php、固定ページならpage.phpです。
必須なのはindex.phpとstyle.cssの2つだけ。ほかは全部任意で、無ければ上の順番で代用されます。
つまずきの定番:front-page.phpとhome.php
名前から想像する意味とずれているのが混乱の元です。
front-page.php——サイトのトップページ(https://example.com/)home.php——投稿一覧のページ
front-page.phpがあれば、トップの設定(最新の投稿/固定ページ)に関係なく最優先で使われます。「トップに固定ページを設定したのに反映されない」ときは、このファイルの存在を確認します。
使われているファイルを確認する方法
推測せず、確かめるのがいちばん速いです。
いちばん楽:プラグインで管理バーに出す
Query Monitorを入れると、管理バーに使用中のテンプレート名が出ます。パネルを開けば「探された候補の一覧」と「読みこまれたテンプレートパーツ」まで見えるので、階層のどこで勝負が決まったのかがそのまま分かります。コードを触らずに済むのが最大の利点です。

以下はプラグインを入れられない環境(本番の調査など)での確認方法です。
目印を置く
<?php echo '★single.php'; ?>疑わしいファイルの先頭に置いて画面に出るかを見ます。出なければ別のファイルが担当です。
body_classから推測する
<body <?php body_class(); ?>>と書いてあれば、HTMLにclass="single single-post postid-42"のような情報が出ます。ブラウザの開発者ツールでbodyのclassを見れば、ページの種類が分かるので担当ファイルを絞りこめます。
テンプレート名を画面に出す
add_action('wp_footer', function () {
global $template;
echo '<!-- template: ' . esc_html(basename($template)) . ' -->';
});HTMLのコメントに担当ファイル名が出ます。公開サイトでは外すか、ログイン中だけ出す条件を付けてください。
テンプレートを分割する(共通パーツ)
同じHTMLを何枚ものテンプレートに書かないための仕組みです。
<?php get_header(); ?> <!-- header.php -->
<?php get_footer(); ?> <!-- footer.php -->
<?php get_sidebar(); ?> <!-- sidebar.php -->
<?php get_template_part('parts/card'); ?> <!-- parts/card.php -->
<?php get_template_part('parts/card', 'wide'); ?> <!-- parts/card-wide.php -->get_template_part()に値を渡すこともできます(第3引数)。
<?php get_template_part('parts/card', null, ['size' => 'large']); ?><?php $size = $args['size'] ?? 'medium'; ?>一覧の1件分のHTMLをパーツにしておくと、トップ・カテゴリ・検索結果で使い回せます。修正も1か所で済みます。
固定ページごとにデザインを変える3つの方法
page-about.php——スラッグがaboutの固定ページ専用(作るだけで自動的に使われる)page-12.php——ID指定(スラッグを変えても効くが、IDが分かりにくい)- ページテンプレート——編集画面から選ばせる方式
<?php
/**
* Template Name: LP(1カラム)
*/
?>先頭にTemplate Name:を書くと、固定ページの編集画面の「テンプレート」から選べるようになります。同じレイアウトを複数のページで使うならこの方式が便利です。
ブロックテーマ(FSE)の場合
ここまでは.phpファイルでテンプレートを作るテーマ(クラシックテーマ)の話でした。ブロックテーマ——サイト全体をブロックエディタで編集するタイプのテーマ——では、テンプレートが.phpではなく.htmlファイルになります。
まず自分のテーマがどちらか確かめる
管理画面の「外観」メニューを見るのがいちばん早いです。
- 「エディター」がある → ブロックテーマ(テンプレートは
.html) - 「テーマファイルエディター」だけ(「カスタマイズ」がある) → クラシックテーマ(テンプレートは
.php)
テーマフォルダの中身なら、templates/フォルダとtheme.jsonがあればブロックテーマです。
ファイル構成
your-theme/
├── templates/ ← テンプレート(.php ではなく .html)
│ ├── index.html
│ ├── single.html
│ └── page.html
├── parts/ ← header.php / footer.php の代わり
│ ├── header.html
│ └── footer.html
├── theme.json ← 色・文字サイズなどの設定
└── style.css必須なのはtemplates/index.htmlとstyle.css。クラシックテーマのindex.phpと同じ位置づけです。
早見表はそのまま使える
探す順番のルールは同じで、拡張子が変わるだけです。
| クラシックテーマ | ブロックテーマ |
|---|---|
single-shohin.php → single.php → index.php | single-shohin.html → single.html → index.html |
上の早見表の.phpを.htmlに読みかえれば、そのまま通用します。ただし編集方法は別物で、ファイルを直接書くよりも管理画面の「外観 → エディター」から編集するのが基本です(保存内容はデータベース側に記録され、テーマのファイルより優先されます)。
まとめ
- WordPressは具体的なファイル→抽象的なファイル→
index.phpの順にテンプレートを探す front-page.php=トップ、home.php=投稿一覧。名前に惑わされない- 迷ったらQuery Monitor(または目印のecho・
$template)で、実際に使われているファイルを確かめる - 共通部分は
get_template_part()で切り出す。固定ページはpage-{スラッグ}.phpかページテンプレート
「どこを直せばいいか」が一目で分かるようになると、カスタマイズの速度が一気に上がります。