welcome!

私たちは、戦略、創造性、テクノロジーを融合させ、絶えず変化し続けるデジタル世界において、ブランドの成長、顧客とのつながり、そして差別化を支援します。

Get in touch

第5回 WordPressのテンプレート階層とURLの仕組み|どのページがどのテンプレートで表示される?

Author

AQUACUBE

2026年10月7日
この記事をシェア
WordPressのテンプレート階層とURLの仕組み
WordPressのテンプレート階層とURLの仕組み

WordPressでオリジナルテーマを制作していると、

「このページは single.php で表示されるの?」

「カスタム投稿タイプの詳細ページはどのファイルを使う?」

「カテゴリー一覧は archive.php なの?」

といった疑問が出てきます。

WordPressには、**テンプレート階層(Template Hierarchy)**という仕組みがあります。

これは、ユーザーがアクセスしたページの種類に応じて、WordPressが「どのテンプレートファイルを使ってページを表示するか」を決める仕組みです。

第3回ではWordPressテーマの基本構造、第4回では投稿・固定ページ・カスタム投稿タイプなどのコンテンツ設計について解説しました。

今回はそこから一歩進み、

「そのコンテンツが、実際にどのテンプレートで表示されるのか?」

を理解していきます。


1. WordPressはURLから「何のページなのか」を判断している

WordPressでページを表示するとき、単純にURLとPHPファイルが1対1で対応しているわけではありません。

例えば、

https://example.com/wordpress/

というURLにアクセスしたからといって、

wordpress.php

というファイルを直接呼び出しているわけではありません。

WordPressは、リクエストされたURLなどの情報から、

  • トップページなのか
  • 投稿ページなのか
  • 固定ページなのか
  • カテゴリー一覧なのか
  • タグ一覧なのか
  • カスタム投稿タイプなのか
  • 検索結果なのか
  • 404ページなのか

などを判断します。

そして、その条件に合ったテンプレートをテンプレート階層に従って探します。

WordPress公式ドキュメントでも、テンプレートローダーがリクエストされたページの情報をもとにテンプレート階層をたどり、最初に見つかった適切なテンプレートを使用すると説明されています。


2. テンプレート階層とは?

テンプレート階層を簡単に説明すると、

「より具体的なテンプレートから探し、なければより汎用的なテンプレートへフォールバックする仕組み」

です。

例えばカテゴリーの場合、

category-wordpress.php
        ↓ なければ
category.php
        ↓ なければ
archive.php
        ↓ なければ
index.php

という順番で探します。

つまり、

専用テンプレート → 汎用テンプレート

という考え方です。

WordPress公式のテンプレート階層でも、カテゴリーのスラッグに対応したテンプレートから、カテゴリー全体、アーカイブ、最終的には index.php へとフォールバックする仕組みが定義されています。


3. index.php は最後の「受け皿」

クラシックテーマを制作する場合、index.php は非常に重要なファイルです。

例えば、

single.php
page.php
archive.php

などの専用テンプレートが存在しない場合、最終的に index.php が使われます。

イメージすると、

専用テンプレート
      ↓
より汎用的なテンプレート
      ↓
index.php

という構造です。

そのため、

「全部のページに index.php が使われる」

という意味ではありません。

より適切なテンプレートが存在しない場合の最終的なフォールバック先

と考えると分かりやすいでしょう。

WordPress公式でも、クラシックテーマでは index.php がテンプレート階層の最終的なフォールバックとして機能すると説明されています。


4. 投稿ページは single.php

例えば通常のブログ記事、

/blog/wordpress-theme/

を表示する場合、一般的なクラシックテーマでは、

single.php

が使われます。

構造としては、

投稿
  ↓
single.php
  ↓
記事を表示

というイメージです。

ただし、さらに細かく専用テンプレートを作ることもできます。

例えば、

single.php
single-post.php

など、投稿タイプに応じてテンプレートを分けることができます。

さらにカスタム投稿タイプなら、

single-portfolio.php

のようなテンプレートを用意することもできます。


5. カスタム投稿タイプでは single-{post-type}.php

第4回で紹介した「制作実績」というカスタム投稿タイプを考えてみましょう。

投稿タイプのスラッグを、

portfolio

とします。

すると詳細ページでは、

single-portfolio.php

という専用テンプレートを用意できます。

例えば、

/blog/wordpress-theme/
        ↓
single.php

/portfolio/sample-site/
        ↓
single-portfolio.php

という使い分けができます。

これがカスタム投稿タイプを使う大きなメリットの一つです。

ブログ記事と制作実績では、

  • レイアウト
  • 表示項目
  • ナビゲーション
  • カスタムフィールド
  • ギャラリー

などが異なることがあります。

そのため、テンプレートを分けて管理できます。


6. 固定ページは page.php

固定ページの場合は、

page.php

が基本となります。

例えば、

/about/

という「会社概要」ページがあった場合、

page.php

で表示できます。

しかし、固定ページもさらに細かく分けることができます。

例えばスラッグが、

about

なら、

page-about.php

というテンプレートを用意できます。

WordPressでは、固定ページに対して専用テンプレートが指定されていない場合、まず page-{slug}.php、次に page-{id}.php、その後 page.php などの順でテンプレートが検討されます。

つまり、

page-about.php
      ↓
page-123.php
      ↓
page.php
      ↓
singular.php
      ↓
index.php

というように、より具体的なテンプレートから探していきます。


7. カテゴリー一覧は archive.php だけではない

カテゴリー一覧ページも、テンプレート階層を理解すると分かりやすくなります。

例えば、

/category/wordpress/

というカテゴリーがあるとします。

カテゴリーのスラッグが wordpress なら、

category-wordpress.php

を用意できます。

なければ、

category.php

さらに、

archive.php

さらに、

index.php

へフォールバックします。

つまり、

category-wordpress.php
        ↓
category.php
        ↓
archive.php
        ↓
index.php

です。

これを理解しておくと、

「WordPressカテゴリーだけデザインを変えたい」

という場合に、

category-wordpress.php

を作ればよいことが分かります。


8. カスタムタクソノミーにもテンプレート階層がある

第4回で紹介したカスタムタクソノミーにも、専用テンプレートを用意できます。

例えば、

portfolio_category

というタクソノミーを作り、

web-design

というタームを登録したとします。

この場合、

taxonomy-portfolio_category-web-design.php

のような専用テンプレートを用意できます。

一般的なテンプレート階層では、

taxonomy-{taxonomy}-{term}.php
        ↓
taxonomy-{taxonomy}.php
        ↓
taxonomy.php
        ↓
archive.php
        ↓
index.php

というように、より具体的なテンプレートから探していきます。


9. アーカイブページとは?

WordPressでよく出てくる「アーカイブ」という言葉。

これは簡単に言えば、

複数のコンテンツを一覧表示するページ

です。

例えば、

  • ブログ記事一覧
  • カテゴリー一覧
  • タグ一覧
  • カスタム投稿タイプ一覧
  • カスタムタクソノミー一覧

などがあります。

例えば「制作実績」というカスタム投稿タイプなら、

/portfolio/

という一覧ページを作り、

archive-portfolio.php

で表示する構成が考えられます。

すると、

制作実績一覧
       ↓
archive-portfolio.php

制作実績詳細
       ↓
single-portfolio.php

という関係になります。

この2つは、Web制作では非常によく使う組み合わせです。


10. single と archive の違いを理解する

ここは実務でも重要です。

single

1件のコンテンツを表示するページ

制作実績A

↓

single-portfolio.php

archive

複数のコンテンツを一覧表示するページ

制作実績A
制作実績B
制作実績C

↓

archive-portfolio.php

つまり、

一覧
↓
archive-portfolio.php

詳細
↓
single-portfolio.php

という関係です。


11. URLとテンプレートは「別の仕組み」

ここで一つ注意したいポイントがあります。

WordPressでは、

URLの構造とテンプレートの構造は同じものではありません。

例えば、

/portfolio/sample-site/

というURLがあったとしても、

portfolio/
    sample-site.php

というファイルが存在するわけではありません。

WordPressがURLから「これは portfolio という投稿タイプの sample-site という投稿だ」と判断し、その結果としてテンプレート階層から、

single-portfolio.php

などを探します。

つまり、

URL
 ↓
WordPressがリクエストを解析
 ↓
投稿タイプ・タクソノミーなどを判断
 ↓
テンプレート階層を検索
 ↓
適切なテンプレートを選択
 ↓
HTMLを生成

という流れです。

この関係を理解すると、WordPressの内部構造がかなり見えやすくなります。


12. パーマリンクとは?

URLの構造を設定する仕組みとして、WordPressにはパーマリンクがあります。

例えば、

https://example.com/?p=123

という形式ではなく、

https://example.com/blog/wordpress/

のように、人間にも分かりやすいURL構造にすることができます。

一般的なWeb制作では、サイト構造に合わせて、

/blog/
/portfolio/
/service/

など、意味の分かりやすいURLを設計することが重要です。

ただし、URLは後から変更すると既存ページへのリンクや検索エンジンからの評価などに影響する可能性があります。

そのため、サイト制作の初期段階でURL構造を考えておくことが大切です。


13. カスタム投稿タイプでは「rewrite」も重要

カスタム投稿タイプを登録するときには、URLのベースとなるスラッグも設計できます。

例えば、

register_post_type(
    'portfolio',
    array(
        'rewrite' => array(
            'slug' => 'portfolio',
        ),
    )
);

とすると、

/portfolio/sample-site/

のようなURL構造を作ることができます。

ここで、

portfolio

という投稿タイプの識別子と、

portfolio

というURL上のスラッグは、同じにする必要はありません。

例えば、

投稿タイプ
portfolio

URL
/works/

という設計も可能です。

これは、

管理上の名前と、ユーザーに見せるURLを分けて考えられる

ということでもあります。


14. テンプレートパーツで共通部分を分ける

テンプレート階層を理解したら、次に覚えておきたいのがテンプレートパーツです。

例えば、

header.php
footer.php

などです。

ページごとに同じHTMLを書くのではなく、

header.php
footer.php

として共通部分を分離します。

さらに、

template-parts/
    content.php
    content-single.php
    content-portfolio.php

などに分けることもできます。

クラシックテーマでは get_template_part() を使ってテンプレートパーツを読み込むことができます。WordPress公式でも、テンプレートパーツは複数のテンプレートで再利用するための仕組みとして説明されています。

例えば、

get_template_part(
    'template-parts/content',
    'portfolio'
);

とすれば、

template-parts/content-portfolio.php

を読み込めます。

こうすることで、テーマのコードを整理しやすくなります。


15. ブロックテーマでもテンプレート階層は存在する

ここまで主にPHPファイルを例に説明してきましたが、ブロックテーマでもテンプレート階層という考え方は存在します。

大きな違いは、

クラシックテーマ → PHP

ブロックテーマ → HTML

という点です。

例えばブロックテーマでは、

templates/
├── index.html
├── single.html
├── page.html
├── archive.html
└── 404.html

といった構造になります。

WordPress公式でも、クラシックテーマとブロックテーマではファイル形式が異なるものの、テンプレート階層の考え方は共通していると説明されています。

ブロックテーマではテンプレートが /templates に配置され、index.html が基本となるフォールバックテンプレートです。


16. クラシックテーマとブロックテーマを比較すると

ここまでの内容を比較してみましょう。

役割クラシックテーマブロックテーマ
メインテンプレートindex.phpindex.html
投稿詳細single.phpsingle.html
固定ページpage.phppage.html
アーカイブarchive.phparchive.html
404404.php404.html
テンプレートPHPHTML+ブロック
共通パーツtemplate-parts などparts
編集方法PHP・コード中心Site Editor・ブロック中心

第3回で紹介したように、どちらが優れているというより、制作するサイトや運用方法に応じて選択することが重要です。


17. 実務で考える「ページとテンプレート」の関係

例えば企業サイトで、

固定ページ
├── 会社概要
├── サービス
└── お問い合わせ

投稿
└── ブログ

カスタム投稿タイプ
└── 制作実績

という構造を作ったとします。

テンプレート側では、

会社概要
↓
page-about.php

サービス
↓
page-service.php

ブログ記事
↓
single.php

制作実績一覧
↓
archive-portfolio.php

制作実績詳細
↓
single-portfolio.php

というように、それぞれの役割に応じたテンプレートを割り当てることができます。

ここまで設計できるようになると、

「WordPressでページを作る」

という考え方から、

「WordPressのデータ構造に合わせてページを設計する」

という考え方へ変わってきます。

これはオリジナルテーマ制作では非常に重要な視点です。


18. テンプレート階層を理解すると「どのファイルを編集すればいい?」が分かる

WordPressを触っていると、

「このページを変更したいけど、どのPHPを編集すればいい?」

という場面が必ず出てきます。

例えば、

ブログ記事の表示を変更したい

single.php

制作実績の詳細だけ変更したい

single-portfolio.php

制作実績一覧を変更したい

archive-portfolio.php

特定カテゴリーだけ変更したい

category-wordpress.php

会社概要ページだけ変更したい

page-about.php

というように考えられます。

つまりテンプレート階層は、

「WordPressのページが、どのテンプレートで表示されているのかを見つけるためのルール」

でもあります。


19. WordPress制作では「データ → URL → テンプレート」の順番で考える

ここまでの第3回〜第5回をつなげると、WordPressの仕組みがより分かりやすくなります。

まず、

① データを設計する

投稿
固定ページ
カスタム投稿タイプ
タクソノミー
カスタムフィールド

↓

② URLを設計する

/blog/

/portfolio/

/portfolio/sample-site/

↓

③ テンプレートを設計する

archive.php
archive-portfolio.php
single.php
single-portfolio.php
page.php

↓

④ デザイン・HTML・CSS・JavaScriptを実装する

という流れです。

この順番で考えると、WordPressサイトの設計がかなり整理されます。


20. まとめ|テンプレート階層はWordPress制作の「設計図」

今回のポイントをまとめると、

  • WordPressにはテンプレート階層がある
  • URLなどのリクエスト情報から表示するページの種類を判断する
  • より具体的なテンプレートから探していく
  • 見つからなければ、より汎用的なテンプレートへフォールバックする
  • single.php は主に1件の投稿を表示する
  • archive.php は複数のコンテンツを一覧表示する
  • single-{post-type}.php でカスタム投稿タイプの詳細を分けられる
  • archive-{post-type}.php でカスタム投稿タイプの一覧を分けられる
  • page-{slug}.php などで特定の固定ページを分けられる
  • カテゴリーやタクソノミーにも専用テンプレートを作れる
  • index.php は最終的なフォールバックとして機能する
  • ブロックテーマでもテンプレート階層の考え方は基本的に共通する

そして、WordPressのWeb制作では、

データ構造 → URL → テンプレート → デザイン

という順番で考えることが重要です。

第4回で紹介した「コンテンツ設計」と、今回の「テンプレート階層」がつながることで、WordPressを単なるCMSではなく、柔軟なWebサイト構築システムとして設計できるようになります。

次回はさらに実装に近づき、WordPressの表示を制御するうえで重要な 「ループ(The Loop)」と WP_Query を取り上げます。

「なぜWordPressは記事を一覧表示できるのか?」

「カスタム投稿タイプだけを取得するには?」

「条件に応じて記事を表示するには?」

といった疑問を、実際のコードを交えながら解説していきます。