ワードプレスのテーマテンプレート(Wordpress Theme Template)久しぶりに作ろうと思い、今のテーマテンプレート階層がどうなっているかを調べました。文章を読むよりも画像が欲しかったのですが、web上には古いものしかなかったので新しく作り直しました。
テーマテンプレートを作るときの手順
- ベースとなるテーマテンプレートをダウンロード。今回はUnderscores (_s)
- WordPressの新規テーマ制作は久しぶりなので、Underscoresのソースを解読
- 必要最低限のファイルのみを残し、削除
- style.css: テーマの基本情報とスタイルを定義
- index.php: メインのテンプレートファイル
- functions.php: テーマの機能を追加
- header.php: サイトのヘッダー部分
- footer.php: サイトのフッター部分
- single.php: 個別投稿ページ用
- archive.php: アーカイブ用
- CSSはいつもCSSフレームワークを使っているのでUIKIT3をダウンロードし、Underscoresとマージ
テーマテンプレートの仕様変更を確認する
10年ぶりくらいの新規作成だったので、色々調べていくと、WordPress4.3(2015年8月)に「singular.php」が追加されていました。他にもないかと調べると結構変わってました。
- singular.php の追加(WordPress 4.3 / 2015年8月)
single.phpやpage.phpの代替として追加is_single()やis_page()に適用される共通テンプレート
-
theme.jsonの導入(WordPress 5.8 / 2021年7月)- ブロックテーマ(FSE: フルサイト編集)向けの設定ファイル
- フォント、カラー、間隔などのスタイルを一元管理
functions.phpでスタイルを管理する従来の方法に代わるもの
- フルサイト編集(FSE)の導入(WordPress 5.9 / 2022年1月)
index.phpの代わりに テンプレートパーツをブロックで編集可能 にheader.phpやfooter.phpを 従来の PHP ではなくブロックエディタで作成 できるtemplate-parts/ディレクトリ の使用が増加
-
block-templateの登場(WordPress 5.9 / 2022年1月)block-template-parts/やblock-templates/を使用するテーマ構造へ移行header.php、footer.phpではなく ブロックテンプレートで管理
- クラシックテーマとブロックテーマの分離(WordPress 6.1 / 2022年11月)
functions.phpによる従来の管理方法と、ブロックエディタの管理が明確に分離
templates/&parts/ディレクトリの導入(WordPress 6.1 / 2022年11月)template-parts/の代わりにparts/を使うブロックテーマが増加templates/内にsingle.htmlやarchive.htmlなどを配置可能
singular.phpとsingle.phpの違い
| テンプレート名 | 適用されるページ | 優先順位 |
|---|---|---|
| single.php | 投稿・postの個別ページ | single-{post-type}.php → single.php |
| page.php | 固定ページ・pageの個別ページ | page-{slug}.php → page.php |
| singular.php | 投稿・post 固定ページ・page | single.php → singular.phppage.php → singular.php |
投稿の個別ページと、固定ページのテンプレートを作るときには、single.phpとpage.phpのソースコードが同じことがよくありました。これを考えると、singular.phpで済むのはコードやファイルの重複を避けられます。
また、カスタム投稿タイプを作るとき、投稿シングルページと、カスタム投稿シングルページも同じソースコードの場合が多いので、これも簡単になります。
今まで 製品カスタム投稿(product)があった場合、single-product.phpと、一般投稿用のsingle.phpの2枚が必要でした。でもシングルページは同じデザインを使うことが多いのでsingular.php1枚ですむのは便利です。
さらにWordPressのテンプレート階層を整理すると、single.phpは一般投稿用、singular.phpはカスタム投稿、一般投稿、固定ページで使える、と整理できます。
他にも大きく変わったようですが、theme.jsonやブロックパーツのことを書き出すと非常に長くなるので、次回の宿題にします。
2024年現代のテンプレート階層
完全に手作りなので、たぶん間違えていないと思いますが、気になる個所があったらフォームで教えてくれると嬉しいです。

さいごに
WordPressのテンプレート階層は、この10年で大きく進化し、より柔軟で効率的な構造へと変化してきたようです。
特に singular.php の追加や theme.json の導入、フルサイト編集(FSE)の実装など、テーマ開発の手法も大きく変わっています。
今後も WordPress は進化を続けるため、最新の仕様を押さえながら開発を進めることが重要です。今回の整理が、テーマ作成やカスタマイズの参考になれば幸いです。