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

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

テンプレート階層

提供: WordPress Codex 日本語版
Template Hierarchyから転送)
移動先: 案内検索

はじめに

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

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

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

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

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

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

条件分岐タグの利用

WordPress がページの種類(クエリタイプ)に合うテンプレートファイルを特定する方法は一つではありません。WordPress テーマ開発者は条件分岐タグを使用して、あるページの生成にどのテンプレートを使うかを制御できます。テーマの中にはここで紹介するすべてのテンプレートファイルを実装しないテーマもありますし、条件分岐タグを使って他のテンプレートファイルを読み込むテーマもあります。より詳細な情報については条件分岐タグおよびテーマの作成ページの「クエリベースのテンプレート」セクションを参照してください。

テンプレートファイルの階層

概念

WordPress はクエリ文字列 — Web サイトの各リンク内に含まれる情報 — を使用して、ページの表示にどのテンプレートあるいはテンプレートの集合を使用すべきかを決定します。

まず WordPress はすべてのクエリ文字列とクエリタイプを照合し、どの種類のページ(検索ページ、カテゴリーページ、ホームページ等) が要求されているかを決定します。

次にテンプレートが選択され — そして、Web ページが生成されます。テンプレートは、WordPress テンプレート階層で規定された順番に、WordPress テーマ内で該当のテンプレートが利用かどうかにより決まります。

WordPress は現在のテーマディレクトリ内から特定のファイル名でテンプレートを探し、以下の該当の節で挙げたリストから最初に見つけたテンプレートファイルを使用します。

基本の index.php テンプレートファイルはテーマに必須ですが、テーマ開発者は他のテンプレートファイルを含めるかどうかを選択できます。 WordPress は 一致する名前のテンプレートファイルが見つからなければそれをスキップして次の候補のファイル名を探します。最後まで一致するテンプレートファイルが見つからなければ index.php (テーマのホームページテンプレートファイル) が使用されます。

例えば、ブログが http://example.com/blog/ にあり、ユーザーがカテゴリーページへのリンク http://example.com/blog/category/your-cat/ をクリックしたとします。WordPress はテンプレート階層を使用して、以下の順番で正しいファイルを探し、生成します。

WordPress は現在のテーマディレクトリ内で、カテゴリーID に合致するテンプレートファイルを探します。

  1. カテゴリーID が 4 なら、WordPress はテンプレートファイル category-4.php を探します。
  2. 見つからなければ、次に WordPress は一般的なカテゴリーテンプレートファイル category.php を探します。
  3. このファイルもなければ、WordPress は一般的なアーカイブテンプレートファイル archive.php を探します。
  4. これもなければ、WordPress はメインテーマテンプレートファイル index.php を使用します。

ユーザーがホームページ http://example.com/blog/ にアクセスすると、以下の順番でテンプレートファイルが決定されます。

  1. WordPress は、まず、静的フロントページがあるかどうかを判断します。静的フロントページが設定されている場合、WordPress は固定ページのテンプレート階層に従ってテンプレートを読み込みます。
  2. 静的フロントページが設定されていない場合、WordPress はテンプレートファイル home.php を探し、これを使用して要求されたページを生成します。
  3. home.php が見つからない場合、WordPress は現在のテーマディレクトリ内でファイル index.php を探し、このテンプレートを使用してページを生成します。

概観図

次の図は WordPress テンプレート階層に基づいて WordPress ページを生成する際、どのテンプレートが呼ばれるかを示します。

WordPress テンプレート階層構造図 Full-Size Image (jpg) - Image courtesy Michelle Schulp at marktimemedia.com

対話式バージョン

テンプレート関連の条件タグや BODY CSS クラスを含む詳細な階層図は こちら を参照。

WordCamp Minneapolis ではちょっと変わったテンプレート階層図が作成された。PDF をダウンロード

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

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

ホームページ表示

サイトフロントページ、または固定ページの上にあるブログ投稿インデックスページの表示に使用されるテンプレートファイル。注意: サイトフロントページ上にある場合、フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。

  1. home.php
  2. index.php

フロントページ表示

サイトフロントページの表示に使用されるテンプレートファイル。フロントページはブログ投稿インデックス、または固定ページを表示します。フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。

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

個別投稿表示

個別投稿ページの表示に使用されるテンプレートファイル。

  1. single-{post_type}.php - 投稿タイプproduct ならば WordPress は single-product.php を探す。
  2. single.php
  3. singular.php
  4. index.php

固定ページ表示

固定ページ (page 投稿タイプ) の表示に使用されるテンプレートファイル。

  1. カスタムテンプレートファイル - ページ作成画面の「テンプレート」ドロップダウンメニューで選択したテンプレート名。get_page_templates()参照。
  2. page-{slug}.php - 固定ページのスラッグが recent-news ならば WordPress は page-recent-news.php を探す。
  3. page-{id}.php - 固定ページIDが 6 ならば WordPress は page-6.php を探す。
  4. page.php
  5. singular.php
  6. index.php

参照: 固定ページ

カテゴリー表示

カテゴリーアーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. category-{slug}.php - カテゴリーのスラッグが news ならば WordPress は category-news.php を探す。
  2. category-{id}.php - カテゴリー ID が 6 ならば WordPress は category-6.php を探す。
  3. category.php
  4. archive.php
  5. index.php

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

タグ表示

タグアーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. tag-{slug}.php - タグのスラッグが sometag ならば WordPress は tag-sometag.php を探す。
  2. tag-{id}.php - タグ ID が 6 ならば WordPress は tag-6.php を探す。
  3. tag.php
  4. archive.php
  5. index.php

参照: タグテンプレート/en

カスタム分類表示

カスタム分類アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. taxonomy-{taxonomy}-{term}.php - 分類名が sometax、項目が someterm ならば WordPress は taxonomy-sometax-someterm.php を探す。投稿フォーマットの場合、分類名は 'post_format'、項目は 'post_format-{format}'、つまり taxonomy-post_format-post-format-link.php
  2. taxonomy-{taxonomy}.php - 分類名が sometax ならば WordPress は taxonomy-sometax.php を探す。
  3. taxonomy.php
  4. archive.php
  5. index.php

参照: カスタム分類

カスタム投稿タイプ表示

カスタム投稿タイプ アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. archive-{post_type}.php - 投稿タイプproduct ならば WordPress は archive-product.php を探す。
  2. archive.php
  3. index.php

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

参照: カスタム投稿タイプ

作成者表示

作成者別アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. author-{nicename}.php - 作成者の nicename がramiならば WordPress は author-rami.php を探す。
  2. author-{id}.php - 作成者の作成者ID が 6 ならば WordPress は author-6.php を探す。
  3. author.php
  4. archive.php
  5. index.php

参照: 作成者テンプレート/en

日付別表示

日付別アーカイブインデックスページの表示に使用されるテンプレートファイル。

  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

参照: 404 テンプレート

添付ファイル表示

個別添付ファイルページ (attachment 投稿タイプ) の表示に使用されるテンプレートファイル。

  1. {MIME_type}.php - 任意の MIME タイプ (image.php, video.php, application.php)。text/plainならば、以下の順番:
    1. text.php
    2. plain.php
    3. textplain.php
  2. attachment.php
  3. single-attachment.php
  4. single.php
  5. index.php

Embeds

embed テンプレートファイルは embed 機能で埋め込まれる投稿のレンダリングに使用されます。Version 4.5 から WordPress は次の順序を使用します。

  1. embed-{post-type}-{post_format}.php - まず WordPress は特定の投稿に関するテンプレートを探します。例えば 投稿タイプが「product」で、「音声(audio)」フォーマットを持つ場合 WordPress は「embed-product-audio.php」を探します。
  2. embed-{post-type}.php – 投稿タイプが「car」であれば WordPress は「embed-car.php」を探します。
  3. embed.php – そして WordPress は「embed.php」に落ちます。
  4. どのテンプレートファイルも見つからなければ最後に WordPress は wp-includes/theme-compat/embed.php を使用します。

階層のフィルター

WordPress テンプレートシステムでは階層にフィルターを適用できます。get_query_template() /en 関数内にあるフィルターはファイル名 "{$type}_template" です。このとき $type は階層内の拡張子 .php なしのファイル名。

すべてのリスト:

  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • tag_template
  • taxonomy_template
  • date_template
  • home_template
  • front_page_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template, plain_template, text_plain_template (すべての MIME タイプ)
  • attachment_template
  • comments_popup

例として、デフォルトの作成者別階層を以下に挙げます。

  • author-{nicename}.php
  • author-{id}.php
  • author.php

ここで author.php の前に author-{role}.php を追加する場合、'author_template' フックを使用して実際の階層を操作できます。/author/username に要求があり、username が編集者権限グループに所属するなら author-editor.php が現在のテーマディレクトリ内で探され、存在すれば表示に使用されます。

function author_role_template( $templates='' )
{
	$author = get_queried_object();
	$role=$author->roles[0];
	
	if(!is_array($templates) && !empty($templates)) {
		$templates=locate_template(array("author-$role.php",$templates),false);
	} 
	elseif(empty($templates)) {
		$templates=locate_template("author-$role.php",false);
	}
	else {
		$new_template=locate_template(array("author-$role.php"));
		if(!empty($new_template)) array_unshift($templates,$new_template);
	}
	
	return $templates;
}
add_filter( 'author_template', 'author_role_template' );

変更履歴

ソースファイル

プラグイン


関連

テンプレート階層: カテゴリーテンプレート, タグテンプレート, タクソノミーテンプレート, ページテンプレート, 投稿タイプテンプレート, 投稿者テンプレート, 日付テンプレート, 検索テンプレート, 404 テンプレート, 添付ファイルテンプレート, ループテンプレート /en


外部資料


最新英語版 Theme Handbook >> Theme Basics >> Template Hierarchy