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

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

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

提供: WordPress Codex 日本語版
移動先: 案内検索
(404 (Not Found) ページ)
(2.9 の変更を追加)
5行目: 5行目:
 
== はじめに ==
 
== はじめに ==
  
[[テーマの作成#テーマテンプレートファイル|テンプレート]]は WordPress サイトを生成するために使われるファイルです。WordPress v1.5 で[[テーマの使い方|「テーマ」]]機能が導入されて以来、テンプレートはますます構造化しやすくなり、たくさんのカスタマイズを盛り込んだ[[テーマの作成|テーマを作成]]できるようになっています。サイト内の全ページを同じデザインにすることも、メインページ・カテゴリ・検索結果といった「ページの種類」毎に別のテンプレートを設けて、デザインや表示内容を変えることもできます。
+
WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。
  
'''テンプレート階層'''とは、WordPress サイトの各ページを表示する際に WordPress がチェックする、テンプレートファイル名の優先順序です。これを利用して、特に作り込みたいページ(種別)のみ専用のテンプレートファイルを設け、その他のページは共通のテンプレートで生成させる、といったことができます。
+
=== このドキュメンテーションの目的 ===
  
このページは、次の問いに答えを出そうとするものです。
+
このドキュメンテーションは、次の質問に答えてくれるでしょう。
  
 
<blockquote id="question">
 
<blockquote id="question">
''○○(ページ)を表示するとき、どのテンプレートファイルが使われるのか?''
+
''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?''
 
</blockquote>
 
</blockquote>
  
テーマを作成するには、ブログの各ページを表示するために WordPress がテンプレートファイルを選び出す仕組みを適切に理解しておくことが不可欠です。既存の WordPress テーマをカスタマイズしたい場合も、編集すべきテンプレートファイルを判断するのに役立ちます。
+
=== このドキュメンテーションの使い方 ===
 +
 
 +
WordPress v1.5 で[[テーマの使い方|「テーマ」]]機能が導入されて以来、[[テーマの作成#.E3.83.86.E3.83.BC.E3.83.9E.E3.83.86.E3.83.B3.E3.83.97.E3.83.AC.E3.83.BC.E3.83.88.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB|テンプレート]]はますまカスタマイズしやすくなりました。[[テーマの作成|WordPress テーマを作成]]するには、WordPress がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。
 +
 
 +
{| cellspacing="3"
 +
|- valign="top"
 +
|class="MainPageKnowledgeBaseBox" style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3"|
 +
 
 +
'''条件分岐タグを使う'''
 +
 
 +
WordPress では、テンプレートとクエリの種類を一致させるための方法が複数用意されています。WordPress テーマ制作者は[[テーマの作成#.E3.82.AF.E3.82.A8.E3.83.AA.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E3.83.86.E3.83.B3.E3.83.97.E3.83.AC.E3.83.BC.E3.83.88|条件分岐タグ]]を使って、あるページを生成するにはどのテンプレートが使われるのかをコントロールすることができます。ここで紹介するすべてのテンプレートファイルを使っていないテーマもありますし、条件分岐タグを使って他のテンプレートファイルを読み込ませているテーマもあります。詳しくは[[Conditional Tags|条件分岐タグ]]および[[テーマの作成#.E3.82.AF.E3.82.A8.E3.83.AA.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E3.83.86.E3.83.B3.E3.83.97.E3.83.AC.E3.83.BC.E3.83.88|テーマの作成ページの「クエリベースのテンプレート」セクション]]をご覧ください。
 +
|}
  
 
<div id="Visual_Overview">
 
<div id="Visual_Overview">
41行目: 52行目:
 
[[#Category page|カテゴリページのテンプレート階層]]は次のとおりです。WordPress はこのリストの'''上から順に'''、ファイルがないかどうか探していき、'''最初に'''見つけたファイルを使います。
 
[[#Category page|カテゴリページのテンプレート階層]]は次のとおりです。WordPress はこのリストの'''上から順に'''、ファイルがないかどうか探していき、'''最初に'''見つけたファイルを使います。
 
<blockquote>
 
<blockquote>
 +
# category-''slug''.php -- 特定のカテゴリ用テンプレート
 
# category-''ID''.php -- 特定のカテゴリ用テンプレート
 
# category-''ID''.php -- 特定のカテゴリ用テンプレート
 
# category.php -- カテゴリの汎用テンプレート
 
# category.php -- カテゴリの汎用テンプレート
46行目: 58行目:
 
# index.php
 
# index.php
 
</blockquote>
 
</blockquote>
りんごカテゴリの ID が <code>'4'</code> であれば、最初に <code>category-''4''.php</code> というテンプレートファイルを探します。ディレクトリ内にそのファイル名が存在しなければ、次に <code>category.php</code> を探し、それもなければ <code>archive.php</code> を探します。それもなければ、あらゆるページに使える基本のテーマテンプレートファイル <code>index.php</code> を使います。
+
りんごカテゴリのスラッグが <code>'apple'</code> だった場合、WordPress はまず <code>category-''apple''.php</code> というテンプレートファイルを探します。テーマディレクトリ内にこのファイルがない場合、ID が4とすれば、<code>category-''4''.php</code> を探します。これも見つからなければさらに <code>category.php</code>、次に <code>archive.php</code> を探します。それもなければ、あらゆるページに使える基本のテーマテンプレートファイル <code>index.php</code> を使います。
  
<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> のみでいいのです。
  
 
<div id="Using Conditional Tags">
 
<div id="Using Conditional Tags">
60行目: 72行目:
 
</div>
 
</div>
  
以下、表示するページの種類別に、WordPress に呼ばれるテンプレートファイルの順序を示します。各セクションの見出しが、冒頭の問い「''○○(ページ)を表示するとき、どのテンプレートファイルが使われるのか?''」の ○○ に当てはまります。
+
以下、表示するページの種類別に、WordPress に呼ばれるテンプレートファイルの順序を示します。各セクションの見出しが、冒頭の質問「''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?''」の、「ある種類のページ」に当てはまります。
  
 
<div id="The_Main_page">
 
<div id="The_Main_page">
66行目: 78行目:
 
</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 が設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。
+
<!-- 英語版の Examples セクションの後半より -->訪問者がサイトのメインページ(ホームページ)にアクセスした場合、WordPress はまず最初に、[[静的フロントページの作り方|静的フロントページ]]/[[:en:Creating a Static Front_Page|en]]<!-- リンク先は表示設定画面のほうがいいかも -->かどうかを判断します。静的フロントページが設定されている場合、[[#WordPress_Page|固定ページのテンプレート階層]]に従ってテンプレートを読み込みます。設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。
  
 
# home.php
 
# home.php
79行目: 91行目:
  
 
<div id="WordPress_Page">
 
<div id="WordPress_Page">
=== WordPress ページ ===
+
=== 固定ページ ===
 
</div>
 
</div>
  
# [[Pages Add New SubPanel|ページ作成画面]]/[[:en:Pages Add New SubPanel|en]]の「ページテンプレート」ドロップダウンメニューで選択した[[Pages#Page Templates|ページテンプレート]]のファイル名
+
[[Pages#Page Templates|ページテンプレート]]:
# [[Pages|page.php]]
+
# [[Pages Add New SubPanel|ページ作成画面]]の「ページテンプレート」ドロップダウンメニューで選択したファイル名
 +
# page-''slug''.php - 例えば固定ページのスラッグが "about" の場合は <tt>page-about.php</tt>
 +
# page-''ID''.php - 例えば固定ページの ID が6の場合は <tt>page-6.php</tt>
 +
# page.php
 
# index.php
 
# index.php
  
注: これは[[Pages|「WordPress ページ」]]についてであり、ブログの一般的な記事や webページのことではありません。
+
注: これは[[Pages|「固定ページ」]]を指し、ブログの一般的な記事や Web ページのことではありません。また、<tt>page-slug.php</tt> および <tt>page-id.php</tt> は[[Version 2.9|バージョン2.9]]以降でのみ使えます。
  
 
<div id="Category_page">
 
<div id="Category_page">
92行目: 107行目:
 
</div>
 
</div>
  
# [[Category Templates|category-''ID''.php]]/[[:en:Category Templates|en]] -- 例えばカテゴリID 6 用のテンプレートであれば <code>category-6.php</code>
+
[[Category Templates|カテゴリーテンプレート]]:
 +
# category-''slug''.php - 例えばカテゴリーのスラッグが "news" の場合は <tt>category-news.php</tt>
 +
# category-''ID''.php - 例えばカテゴリID 6 用のテンプレートであれば <code>category-6.php</code>
 
# [[Category Templates|category.php]]/[[:en:Category Templates|en]]
 
# [[Category Templates|category.php]]/[[:en:Category Templates|en]]
 
# archive.php
 
# archive.php
 
# index.php
 
# index.php
 +
 +
注: <tt>category-slug.php</tt> は[[Version 2.9|バージョン2.9]]以降でのみ使えます。
  
 
<div id="Tag_page">
 
<div id="Tag_page">
101行目: 120行目:
 
</div>
 
</div>
  
# [[Tag Templates|tag-''タグスラッグ''.php]]/[[:en:Tag Templates|en]]
+
[[Tag Templates|タグテンプレート]]/[[:en:Tag Templates|en]]:
# [[Tag Templates|tag.php]]/[[:en:Tag Templates|en]]
+
# tag-''slug''.php
 +
# tag-''ID''.php
 +
# tag.php
 
# archive.php
 
# archive.php
 
# index.php
 
# index.php
  
注: [[Version 2.3|WordPress 2.3]] 以上でのみ使えます。
+
注: タグテンプレートは[[Version 2.3|WordPress 2.3]] 以上でのみ使えます。また、<tt>tag-ID.php</tt> は[[Version 2.9|バージョン2.9]]以降でのみ使えます。
  
 
<div id="Author_page">
 
<div id="Author_page">
112行目: 133行目:
 
</div>
 
</div>
  
# [[Author Templates|author.php]]/[[:en:Author Templates|en]]
+
[[Author Templates|著者テンプレート]]/[[:en:Author Templates|en]]:
 +
# author.php
 
# archive.php
 
# archive.php
 
# index.php
 
# index.php
147行目: 169行目:
 
記事本文への[[Using Image and File Attachments#Inserting Files|画像添付]]/[[:en:Using Image and File Attachments#Inserting Files|en]]で '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] の最初の部分のファイル名
+
# ''MIME_TYPE''.php - image.php, video.php, audio.php, application.php, その他 [http://en.wikipedia.org/wiki/Internet_media_type MIME type] の最初の部分のファイル名
 
# attachment.php
 
# attachment.php
 
# single.php
 
# single.php
154行目: 176行目:
 
== 変更履歴 ==
 
== 変更履歴 ==
  
 +
* [[Version 2.9|2.9]] : [[#WordPress_Page|page-slug.php]]、[[#WordPress_Page|page-id.php]]、[[#Category_Page|category-slug.php]]、[[#Tag_Page|tag-id.php]] を追加。
 
* (バージョン確認中) : [[#Attachment_page|添付ファイルページ]]に使われるテンプレートファイル名を追加。
 
* (バージョン確認中) : [[#Attachment_page|添付ファイルページ]]に使われるテンプレートファイル名を追加。
 
* (バージョン確認中) : [[#Attachment_page|添付ファイルページ]]を追加。
 
* (バージョン確認中) : [[#Attachment_page|添付ファイルページ]]を追加。

2009年11月8日 (日) 04:08時点における版

はじめに

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最新版との差分