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

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

テンプレート階層

提供: WordPress Codex 日本語版
2015年1月9日 (金) 19:54時点におけるMiccweb (トーク | 投稿記録)による版 (仕組み)

移動先: 案内検索

はじめに

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

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

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

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

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

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

条件分岐タグを使う

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

概観図

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

WordPress テンプレート階層構造図

仕組み

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

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

例えば、ブログが 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 はまず最初に、静的フロントページかどうかを判断します。静的フロントページが設定されている場合、固定ページのテンプレート階層に従ってテンプレートを読み込みます。設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。

  1. home.php
  2. index.php

個別投稿表示

  1. single-{post_type}.php - 投稿タイプvideos の場合は single-videos.php (バージョン 3.0 以降)
  2. single.php
  3. 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 ページのことではありません。

フロントページ表示

バージョン 3.0 以降。

  1. front-page.php - 管理 > 設定 > 表示設定 セクションで「フロントページの表示」が「最新の投稿」または「固定ページ」どちらになっている場合でも使われる。
  2. 固定ページ表示ルール - 管理 > 設定 > 表示設定 セクションの「フロントページの表示」で、「フロントページ」が設定されている場合
  3. ホームページ表示ルール - 管理 > 設定 > 表示設定 セクションの「フロントページの表示」で、「投稿ページ」が設定されている場合

カテゴリー表示

カテゴリーテンプレート

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

タグ表示

タグテンプレート/en

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

カスタム分類表示

カスタム分類テンプレート。

  1. taxonomy-{taxonomy}-{term}.php - 例えば分類名が "sometax"、スラッグが "someterm" の場合は taxonomy-sometax-someterm.php
  2. taxonomy-{taxonomy}.php - 例えば分類名が "sometax" の場合は taxonomy-sometax.php
  3. taxonomy.php
  4. archive.php
  5. index.php

カスタム投稿タイプ表示

カスタム投稿タイプテンプレート。

  1. archive-{post_type}.php - 例えば投稿タイプ名が "product" の場合は archive-product.php.
  2. archive.php
  3. index.php

(カスタム投稿タイプの個別ページを表示する場合は個別投稿表示を参照)

作成者表示

作成者テンプレート/en

  1. author-{nicename}.php - 例えば作成者の nicename が "hanako" の場合は author-hanako.php (バージョン 3.0 以降)
  2. author-{id}.php - 例えば作成者の ID が "6" の場合は author-6.php (バージョン 3.0 以降)
  3. author.php
  4. archive.php
  5. index.php

日付別表示

日時ごとのアーカイブテンプレート。

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

検索結果表示

検索テンプレート

  1. search.php
  2. index.php

404 (Not Found) 表示

404 テンプレート

  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

変更履歴

ソースファイル

テンプレート階層関数群は wp-includes/theme.php にあります。

外部資料


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