• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

テンプレート階層

提供: WordPress Codex 日本語版
2009年11月8日 (日) 04:09時点におけるNao (トーク | 投稿記録)による版 (変更履歴: 原文版情報を更新)

移動先: 案内検索

はじめに

WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。

このドキュメンテーションの目的

このドキュメンテーションは、次の質問に答えてくれるでしょう。

ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?

このドキュメンテーションの使い方

WordPress v1.5 で「テーマ」機能が導入されて以来、テンプレートはますまカスタマイズしやすくなりました。WordPress テーマを作成するには、WordPress がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。

条件分岐タグを使う

WordPress では、テンプレートとクエリの種類を一致させるための方法が複数用意されています。WordPress テーマ制作者は条件分岐タグを使って、あるページを生成するにはどのテンプレートが使われるのかをコントロールすることができます。ここで紹介するすべてのテンプレートファイルを使っていないテーマもありますし、条件分岐タグを使って他のテンプレートファイルを読み込ませているテーマもあります。詳しくは条件分岐タグおよびテーマの作成ページの「クエリベースのテンプレート」セクションをご覧ください。

概観図

次の図は、WordPress テンプレート階層に基づいてウェブページを生成する際に呼ばれるテンプレートファイルを図解したものです。訪問者がアクセスする各種ページのクエリ文字列と、それに対応する条件分岐タグ、そして、WordPress が探すテンプレートファイル名の順序を示しています。

仕組み

訪問者が WordPress サイト上のページにアクセスしたとき、WordPress は次のように動きます。

  1. URI に含まれるクエリ文字列とクエリタイプを照合し、要求されているページの種類(メインページ、カテゴリページなど)を判断。
  2. 該当するページ種類のテンプレート階層に基づき、現在のテーマディレクトリ内からテンプレートファイルを探す。
  3. 最初に見つかったテンプレートファイルを用いて、要求されたページを生成。

例えば、ブログが http://example.com/wp/ にあり、訪問者が http://example.com/wp/category/apple/ という「りんご」カテゴリのアーカイブページにアクセスしたとしましょう。WordPress は、現在のテーマディレクトリの中からりんごカテゴリに使えるテンプレートファイルを探します。

カテゴリページのテンプレート階層は次のとおりです。WordPress はこのリストの上から順に、ファイルがないかどうか探していき、最初に見つけたファイルを使います。

  1. category-slug.php -- 特定のカテゴリ用テンプレート
  2. category-ID.php -- 特定のカテゴリ用テンプレート
  3. category.php -- カテゴリの汎用テンプレート
  4. archive.php -- 汎用アーカイブテンプレート(タグ・日別アーカイブなどと共用)
  5. index.php

りんごカテゴリのスラッグが 'apple' だった場合、WordPress はまず category-apple.php というテンプレートファイルを探します。テーマディレクトリ内にこのファイルがない場合、ID が4とすれば、category-4.php を探します。これも見つからなければさらに category.php、次に archive.php を探します。それもなければ、あらゆるページに使える基本のテーマテンプレートファイル index.php を使います。

index.php はテーマに必須ですが、テーマの作成者は他のテンプレートファイルを含めるかどうかを選べます。WordPress は 一致する名前のテンプレートファイルが見つからなければそれをスキップして次の候補のファイル名を探してくれます。例えば、他のページと違った表示にしたいのがカテゴリID 4 だけなら、テーマディレクトリ内に置くテンプレートファイルは category-4.phpindex.php のみでいいのです。

条件分岐タグの利用

WordPress がページの種類(クエリタイプ)に合うテンプレートファイルを特定する方法は一つではありません。条件分岐タグは表示しようとしているページの種類を判定できるので、その判定結果によってテンプレートファイルを切り替えたり、複数のページ種類で共通のテンプレートファイルを使い、その中の一部分だけをページ種類に応じて切り替える、といった細かい制御もできます。具体的な活用例として、デフォルトテーマの sidebar.php が参考になるでしょう。詳しくは条件分岐タグおよびテーマの作成 - クエリベースのテンプレートをご覧ください。

ページ種類別テンプレート階層

以下、表示するページの種類別に、WordPress に呼ばれるテンプレートファイルの順序を示します。各セクションの見出しが、冒頭の質問「ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?」の、「ある種類のページ」に当てはまります。

メインページ

訪問者がサイトのメインページ(ホームページ)にアクセスした場合、WordPress はまず最初に、静的フロントページ/enかどうかを判断します。静的フロントページが設定されている場合、固定ページのテンプレート階層に従ってテンプレートを読み込みます。設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。

  1. home.php
  2. index.php

単体記事ページ

  1. single.php
  2. index.php

固定ページ

ページテンプレート:

  1. ページ作成画面の「ページテンプレート」ドロップダウンメニューで選択したファイル名
  2. page-slug.php - 例えば固定ページのスラッグが "about" の場合は page-about.php
  3. page-ID.php - 例えば固定ページの ID が6の場合は page-6.php
  4. page.php
  5. index.php

注: これは「固定ページ」を指し、ブログの一般的な記事や Web ページのことではありません。また、page-slug.php および page-id.phpバージョン2.9以降でのみ使えます。

カテゴリページ

カテゴリーテンプレート:

  1. category-slug.php - 例えばカテゴリーのスラッグが "news" の場合は category-news.php
  2. category-ID.php - 例えばカテゴリID 6 用のテンプレートであれば category-6.php
  3. category.php/en
  4. archive.php
  5. index.php

注: category-slug.phpバージョン2.9以降でのみ使えます。

タグページ

タグテンプレート/en:

  1. tag-slug.php
  2. tag-ID.php
  3. tag.php
  4. archive.php
  5. index.php

注: タグテンプレートはWordPress 2.3 以上でのみ使えます。また、tag-ID.phpバージョン2.9以降でのみ使えます。

著者テンプレート

著者テンプレート/en:

  1. author.php
  2. archive.php
  3. index.php

日付別ページ

例えば月別アーカイブページなど

  1. date.php
  2. archive.php
  3. index.php

検索結果ページ

  1. search.php/en
  2. index.php

404 (Not Found) ページ

  1. 404.php
  2. index.php

添付ファイルページ

記事本文への画像添付/enで 'Linked to Page' を選んだ場合に、画像のリンク先として使われるページ

  1. MIME_TYPE.php - image.php, video.php, audio.php, application.php, その他 MIME type の最初の部分のファイル名
  2. attachment.php
  3. single.php
  4. index.php

変更履歴


最新英語版: WordPress Codex » Template Hierarchy最新版との差分