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

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

「テンプレート階層」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(前回編集時の元とした原文版番号を挿入(18:28, February 25, 2008 Otto42 版))
(添付ファイルページにテンプレート階層追加、メインページの動作について説明追加(最新版反映)、ほか微調整)
3行目: 3行目:
 
<div style="border: 1px solid #036; background:#eee; text-align:center; margin:5px; padding:10px">'''Note:'''  This article covers an advanced topic. See [[Stepping Into Templates]] for an introduction to WordPress templates.</div>
 
<div style="border: 1px solid #036; background:#eee; text-align:center; margin:5px; padding:10px">'''Note:'''  This article covers an advanced topic. See [[Stepping Into Templates]] for an introduction to WordPress templates.</div>
 
-->
 
-->
<div id="Introduction">
 
 
== はじめに ==
 
== はじめに ==
</div>
 
  
[[テーマの作成#テーマテンプレートファイル|テンプレート]]は WordPress サイトを生成するために使われるファイルです。WordPress v1.5 で[[:ja:Using Themes|「テーマ」]]機能が導入されて以来、テンプレートはますます構造化しやすくなり、たくさんのカスタマイズを盛り込んだ[[テーマの作成|テーマを作成]]できるようになっています。サイト内の全ページを同じデザインにすることも、メインページ・カテゴリ・検索結果といった''ページの種類''ごとに別のテンプレートを設けて、デザインや表示内容を変えることもできます。
+
[[テーマの作成#テーマテンプレートファイル|テンプレート]]は WordPress サイトを生成するために使われるファイルです。WordPress v1.5 で[[テーマの使い方|「テーマ」]]機能が導入されて以来、テンプレートはますます構造化しやすくなり、たくさんのカスタマイズを盛り込んだ[[テーマの作成|テーマを作成]]できるようになっています。サイト内の全ページを同じデザインにすることも、メインページ・カテゴリ・検索結果といった「ページの種類」毎に別のテンプレートを設けて、デザインや表示内容を変えることもできます。
  
 
'''テンプレート階層'''とは、WordPress サイトの各ページを表示する際に WordPress がチェックする、テンプレートファイル名の優先順序です。これを利用して、特に作り込みたいページ(種別)のみ専用のテンプレートファイルを設け、その他のページは共通のテンプレートで生成させる、といったことができます。
 
'''テンプレート階層'''とは、WordPress サイトの各ページを表示する際に WordPress がチェックする、テンプレートファイル名の優先順序です。これを利用して、特に作り込みたいページ(種別)のみ専用のテンプレートファイルを設け、その他のページは共通のテンプレートで生成させる、といったことができます。
23行目: 21行目:
 
</div>
 
</div>
  
次の図は、WordPress テンプレート階層に基づいてウェブページを生成する際に呼ばれるテンプレートファイルを図解したものです。訪問者がアクセスする各種ページの[[用語集#Query string|クエリ文字列]]と、それに対応する[[:ja:Conditional Tags|条件タグ]]、そして、WordPress が探すテンプレートファイル名の順序を示しています。
+
次の図は、WordPress テンプレート階層に基づいてウェブページを生成する際に呼ばれるテンプレートファイルを図解したものです。訪問者がアクセスする各種ページの[[用語集#Query string|クエリ文字列]]と、それに対応する[[Conditional Tags|条件分岐タグ]]、そして、WordPress が探すテンプレートファイル名の順序を示しています。
  
[[:en:Image:templatehierarchyexample.png|WordPress テンプレート階層構造図]] (英語版 Codex サイトにあります)
+
[[:en:Image:templatehierarchyexample.png|WordPress テンプレート階層構造図]] (画像は英語版Codex にあります)
  
 
<!-- Codex image page: http://codex.wordpress.org/Image:wp_Template_Hierarchy.png -->
 
<!-- Codex image page: http://codex.wordpress.org/Image:wp_Template_Hierarchy.png -->
 
* [http://codex.wordpress.org/images/1/1d/wp_Template_Hierarchy.png フルサイズ画像(PNG形式)]
 
* [http://codex.wordpress.org/images/1/1d/wp_Template_Hierarchy.png フルサイズ画像(PNG形式)]
* [http://www.scoutpress.de/download/wp_Template_Hierarchy.zargo ArgoUML-0.22-File (zargo) ダウンロード](外部リンク)
 
  
 
<div id="The_Template_File_Hierarchy">
 
<div id="The_Template_File_Hierarchy">
54行目: 51行目:
 
<code>index.php</code> はテーマに必須ですが、他のテンプレートファイルを設けるか否かは、テーマの作成者が選べます。WordPress は、一致する名前のテンプレートファイルを見つけられなければそれを飛ばし、次の候補のファイル名を探してくれます。例えば、他のページと様式を変えたいのがカテゴリID 4 だけなのであれば、テーマディレクトリ内に置くテンプレートファイルは <code>category-4.php</code> と <code>index.php</code> だけでいいのです。
 
<code>index.php</code> はテーマに必須ですが、他のテンプレートファイルを設けるか否かは、テーマの作成者が選べます。WordPress は、一致する名前のテンプレートファイルを見つけられなければそれを飛ばし、次の候補のファイル名を探してくれます。例えば、他のページと様式を変えたいのがカテゴリID 4 だけなのであれば、テーマディレクトリ内に置くテンプレートファイルは <code>category-4.php</code> と <code>index.php</code> だけでいいのです。
  
'''備考''': WordPress がページの種類(クエリタイプ)に合うテンプレートファイルを特定する方法は一つではありません。'''[[:ja:Conditional Tags|条件タグ]]'''は表示しようとしているページの種類を判定できるので、その判定結果によってテンプレートファイルを切り替えたり、複数のページ種類で共通のテンプレートファイルを使い、そのページ内の表示の一部分だけをページ種類に応じて変える、というような細かい制御もできます。詳しくは[[テーマの作成#Query-based Templates|テーマの作成]]および[[:ja:Conditional Tags|条件タグ]]のページをご覧ください。
+
<div id="Using Conditional Tags">
 +
== 条件分岐タグの利用 ==
 +
</div>
 +
 
 +
WordPress がページの種類(クエリタイプ)に合うテンプレートファイルを特定する方法は一つではありません。'''[[Conditional Tags|条件分岐タグ]]'''は表示しようとしているページの種類を判定できるので、その判定結果によってテンプレートファイルを切り替えたり、複数のページ種類で共通のテンプレートファイルを使い、その中の一部分だけをページ種類に応じて切り替える、といった細かい制御もできます。具体的な活用例として、デフォルトテーマの <code>sidebar.php</code> が参考になるでしょう。詳しくは[[Conditional Tags|条件分岐タグ]]および[[テーマの作成#Query-based Templates|テーマの作成 - クエリベースのテンプレート]]をご覧ください。
  
 
<div id="The_Template_Hierarchy_In_Detail">
 
<div id="The_Template_Hierarchy_In_Detail">
65行目: 66行目:
 
=== メインページ ===
 
=== メインページ ===
 
</div>
 
</div>
 +
 +
<!-- 英語版の Examples セクションの後半より -->訪問者がサイトのメインページ(ホームページ)にアクセスした場合、WordPress はまず最初に、[[Creating a Static Front_Page|static front page]]/[[:en:Creating a Static Front_Page|en]]<!-- リンク先は表示設定画面のほうがいいかも -->かどうかを判断します。static front page が設定されている場合、[[#WordPress_Page|固定ページのテンプレート階層]]に従ってテンプレートを読み込みます。static front page が設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。
  
 
# home.php
 
# home.php
80行目: 83行目:
 
</div>
 
</div>
  
# [[:ja:Pages|ページ]]作成・編集画面の「ページテンプレート」ドロップダウンメニューで選択したページテンプレート
+
# [[Pages Add New SubPanel|ページ作成画面]]/[[:en:Pages Add New SubPanel|en]]の「ページテンプレート」ドロップダウンメニューで選択した[[Pages#Page Templates|ページテンプレート]]のファイル名
# [[:ja:Pages|page.php]]
+
# [[Pages|page.php]]
 
# index.php
 
# index.php
  
注: この節は[[:ja:Pages|「WordPress ページ」]]についてであり、ブログの一般的な記事やウェブページではありません。
+
注: これは[[Pages|「WordPress ページ」]]についてであり、ブログの一般的な記事や webページのことではありません。
  
 
<div id="Category_page">
 
<div id="Category_page">
90行目: 93行目:
 
</div>
 
</div>
  
# [[:en:Category Templates|category-''ID''.php]] -- 例えばカテゴリID 6 用のテンプレートであれば <code>category-6.php</code>
+
# [[Category Templates|category-''ID''.php]]/[[:en:Category Templates|en]] -- 例えばカテゴリID 6 用のテンプレートであれば <code>category-6.php</code>
# [[:en:Category Templates|category.php]]
+
# [[Category Templates|category.php]]/[[:en:Category Templates|en]]
 
# archive.php
 
# archive.php
 
# index.php
 
# index.php
99行目: 102行目:
 
</div>
 
</div>
  
# [[:en:Tag Templates|tag-''タグスラッグ''.php]]
+
# [[Tag Templates|tag-''タグスラッグ''.php]]/[[:en:Tag Templates|en]]
# [[:en:Tag Templates|tag.php]]
+
# [[Tag Templates|tag.php]]/[[:en:Tag Templates|en]]
 
# archive.php
 
# archive.php
 
# index.php
 
# index.php
110行目: 113行目:
 
</div>
 
</div>
  
# [[:en:Author Templates|author.php]]
+
# [[Author Templates|author.php]]/[[:en:Author Templates|en]]
 
# archive.php
 
# archive.php
 
# index.php
 
# index.php
128行目: 131行目:
 
</div>
 
</div>
  
# [[:en:Creating a Search Page|search.php]]
+
# [[Creating a Search Page|search.php]]/[[:en:Creating a Search Page|en]]
 
# index.php
 
# index.php
  
135行目: 138行目:
 
</div>
 
</div>
  
# [[:en:Creating an Error 404 Page|404.php]]
+
# [[Creating an Error 404 Page|404.php]]/[[:en:Creating an Error 404 Page|en]]
 
# index.php
 
# index.php
  
142行目: 145行目:
 
</div>
 
</div>
  
記事本文への[[:en:Using Image and File Attachments#Inserting Files|画像添付]]で 'Linked to Page' を選んだ場合に、画像のリンク先として使われるページ
+
記事本文への[[Using Image and File Attachments#Inserting Files|画像添付]]/[[:en:Using Image and File Attachments#Inserting Files|en]]で 'Linked to Page' を選んだ場合に、画像のリンク先として使われるページ
  
 +
# image.php, video.php, audio.php, application.php, その他 [http://en.wikipedia.org/wiki/Internet_media_type MIME type] の最初の部分のファイル名
 
# attachment.php
 
# attachment.php
 +
# single.php
 
# index.php
 
# index.php
  
 
== 変更履歴 ==
 
== 変更履歴 ==
  
* (確認中) : [[#Attachment_page|添付ファイルページ]]を追加。
+
* (バージョン確認中) : [[#Attachment_page|添付ファイルページ]]に使われるテンプレートファイル名を追加。
 +
* (バージョン確認中) : [[#Attachment_page|添付ファイルページ]]を追加。
 
* [[Version 2.3|2.3]] : [[#Tag_page|タグページ]]を追加。
 
* [[Version 2.3|2.3]] : [[#Tag_page|タグページ]]を追加。
  
160行目: 166行目:
 
-->
 
-->
  
{{原文|Template Hierarchy|53991}}<!-- 18:28, February 25, 2008 Otto42 版 -->
+
{{原文|Template Hierarchy|66903}}<!-- 18:56, February 3, 2009 Bono 版 -->
  
 
{{DEFAULTSORT:てんふれえとかいそう}}
 
{{DEFAULTSORT:てんふれえとかいそう}}

2009年2月4日 (水) 04:11時点における版

はじめに

テンプレートは WordPress サイトを生成するために使われるファイルです。WordPress v1.5 で「テーマ」機能が導入されて以来、テンプレートはますます構造化しやすくなり、たくさんのカスタマイズを盛り込んだテーマを作成できるようになっています。サイト内の全ページを同じデザインにすることも、メインページ・カテゴリ・検索結果といった「ページの種類」毎に別のテンプレートを設けて、デザインや表示内容を変えることもできます。

テンプレート階層とは、WordPress サイトの各ページを表示する際に WordPress がチェックする、テンプレートファイル名の優先順序です。これを利用して、特に作り込みたいページ(種別)のみ専用のテンプレートファイルを設け、その他のページは共通のテンプレートで生成させる、といったことができます。

このページは、次の問いに答えを出そうとするものです。

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

テーマを作成するには、ブログの各ページを表示するために WordPress がテンプレートファイルを選び出す仕組みを適切に理解しておくことが不可欠です。既存の WordPress テーマをカスタマイズしたい場合も、編集すべきテンプレートファイルを判断するのに役立ちます。

概観図

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

WordPress テンプレート階層構造図 (画像は英語版Codex にあります)

仕組み

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

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

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

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

  1. category-ID.php -- 特定のカテゴリ用テンプレート
  2. category.php -- カテゴリの汎用テンプレート
  3. archive.php -- 汎用アーカイブテンプレート(タグ・日別アーカイブなどと共用)
  4. index.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 はまず最初に、static front page/enかどうかを判断します。static front page が設定されている場合、固定ページのテンプレート階層に従ってテンプレートを読み込みます。static front page が設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。

  1. home.php
  2. index.php

単体記事ページ

  1. single.php
  2. index.php

WordPress ページ

  1. ページ作成画面/enの「ページテンプレート」ドロップダウンメニューで選択したページテンプレートのファイル名
  2. page.php
  3. index.php

注: これは「WordPress ページ」についてであり、ブログの一般的な記事や webページのことではありません。

カテゴリページ

  1. category-ID.php/en -- 例えばカテゴリID 6 用のテンプレートであれば category-6.php
  2. category.php/en
  3. archive.php
  4. index.php

タグページ

  1. tag-タグスラッグ.php/en
  2. tag.php/en
  3. archive.php
  4. index.php

注: WordPress 2.3 以上でのみ使えます。

著者テンプレート

  1. author.php/en
  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/en
  2. index.php

添付ファイルページ

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

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

変更履歴


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