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

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

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

提供: WordPress Codex 日本語版
移動先: 案内検索
(en:Template Hierarchy 2008年2月25日 (月) 18:28 Otto42 版)
 
(embed template 翻訳)
 
(8人の利用者による、間の33版が非表示)
1行目: 1行目:
<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>
+
{{テーマ・テンプレートガイド|テンプレート}}
  
 +
== はじめに<!--Introduction--> ==
  
== Introduction ==
+
WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。
  
WordPress Templates fit together like the pieces of a puzzle to generate the web pages on your WordPress site. Some templates (the header and footer template files for example) are used on all the web pages, while others are used only under specific conditions.
+
=== このドキュメンテーションの目的<!--What this article is about--> ===
  
 
+
このドキュメンテーションは、次の疑問に答えてくれるでしょう。
=== What this article is about ===
+
 
+
This article seeks to answer the following question:
+
  
 
<blockquote>
 
<blockquote>
''Which template file(s) will WordPress use when it displays a certain type of page?''
+
''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?''
 
</blockquote>
 
</blockquote>
  
 +
=== このドキュメンテーションの使い方<!--Who might find this useful--> ===
  
=== Who might find this useful ===
+
WordPress 1.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 がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。
  
Since the introduction of [[Using Themes|Themes]] in WordPress v1.5, [[Templates]] have become more and more configurable. In order to [[Theme_Development|develop]] WP themes, a proper understanding of the way WordPress selects template files to display the various pages on your blog is essential. If you seek to customize an existing WordPress theme, this article aims to help you decide which template file needs editing.
+
<div id="Using Conditional Tags">
 +
== 条件分岐タグの利用==
 +
</div>
  
{| cellspacing="3"
+
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|テーマの作成ページの「クエリベースのテンプレート」セクション]]を参照してください。
|- valign="top"
+
|class="MainPageKnowledgeBaseBox" style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3"|
+
=== Conditional Tags and the Template Hierarchy ===
+
  
WordPress provides more than one way to match templates to query types. WordPress Theme developers can also use [[Theme_Development#Query-based_Templates|Conditional Tags]] to control which templates will be used to generate a certain page. Some WordPress Themes may not implement all of the template files described here. Some Themes use conditional tags to load other template files. See the [[Theme Development#Query-based Templates|Theme Development]] and [[Conditional Tags]] pages for more.
+
== テンプレートファイルの階層<!--The Template File Hierarchy-->==
|}
+
  
 +
=== 概念<!--The General Idea--> ===
  
== The Template File Hierarchy ==
+
WordPress は[[用語集#クエリ文字列|クエリ文字列]] &mdash; Web サイトの各リンク内に含まれる情報 &mdash; を使用して、ページの表示にどのテンプレートあるいはテンプレートの集合を使用すべきかを決定します。
  
 +
まず WordPress はすべてのクエリ文字列とクエリタイプを照合し、どの種類のページ(検索ページ、カテゴリーページ、ホームページ等) が要求されているかを決定します。
  
=== The General Idea ===
+
次にテンプレートが選択され &mdash; そして、Web ページが生成されます。テンプレートは、WordPress テンプレート階層で規定された順番に、WordPress テーマ内で該当のテンプレートが利用かどうかにより決まります。
  
WordPress uses the [[Glossary#Query_string|Query String]] &mdash; information contained within each link on your web site &mdash; to decide which template or set of templates will be used to display the page.
+
WordPress は現在のテーマディレクトリ内から特定のファイル名でテンプレートを探し、以下の該当の節で挙げたリストから''最初に見つけた''テンプレートファイルを使用します。
  
First, WordPress matches every Query String to query types &mdash; i.e. it decides what type of page (a search page, a category page, the home page etc.) is being requested.
+
基本の <tt style="font-weight:bold; color:#036">index.php</tt> テンプレートファイルはテーマに必須ですが、テーマ開発者は他のテンプレートファイルを含めるかどうかを選択できます。 WordPress は 一致する名前のテンプレートファイルが見つからなければそれをスキップして次の候補のファイル名を探します。最後まで一致するテンプレートファイルが見つからなければ <tt style="font-weight:bold; color:#036">index.php</tt> (テーマのホームページテンプレートファイル) が使用されます。
  
Templates are then chosen &mdash; and web page content is generated &mdash; in the order suggested by the WordPress Template hierarchy, depending upon what templates are available in a particular WordPress Theme.
+
=== 例<!--Examples--> ===
  
WordPress looks for template files with specific names in the current Theme's directory and uses the ''first matching'' template file listed under the appropriate query section below.  
+
例えば、ブログが <tt style="font-weight:bold; color:#036"><nowiki>http://example.com/blog/</nowiki></tt> にあり、ユーザーがカテゴリーページへのリンク <tt style="font-weight:bold; color:#036"><nowiki>http://example.com/blog/category/your-cat/</nowiki></tt> をクリックしたとします。WordPress はテンプレート階層を使用して、以下の順番で正しいファイルを探し、生成します。
  
With the exception of the basic <tt style="font-weight:bold; color:#036"><nowiki>index.php</nowiki></tt> template file, Theme developers can choose whether they want to implement a particular template file or not. If WordPress cannot find a template file with a matching name, it skips down to the next file name in the hierarchy. If WordPress cannot find any matching template file, <tt style="font-weight:bold; color:#036">index.php</tt> (the Theme's home page template file) will be used. 
+
WordPress は現在のテーマディレクトリ内で、カテゴリーID に合致するテンプレートファイルを探します。
  
 +
# カテゴリーID が 4 なら、WordPress はテンプレートファイル <tt style="font-weight:bold; color:#036">category-4.php</tt> を探します。
 +
# 見つからなければ、次に WordPress は一般的なカテゴリーテンプレートファイル <tt style="font-weight:bold; color:#036">category.php</tt> を探します。
 +
# このファイルもなければ、WordPress は一般的なアーカイブテンプレートファイル <tt style="font-weight:bold; color:#036">archive.php</tt> を探します。
 +
# これもなければ、WordPress はメインテーマテンプレートファイル <tt style="font-weight:bold; color:#036">index.php</tt> を使用します。
  
=== Examples ===
+
ユーザーがホームページ <tt style="font-weight:bold; color:#036"><nowiki>http://example.com/blog/</nowiki></tt> にアクセスすると、以下の順番でテンプレートファイルが決定されます。
  
If your blog is at <tt style="font-weight:bold; color:#036"><nowiki>http://domain.com/wp/</nowiki></tt> and a visitor clicks on a link to a category page like
+
# WordPress は、まず、[[Creating_a_Static_Front_Page|静的フロントページ]]があるかどうかを判断します。静的フロントページが設定されている場合、WordPress は[[#Page_display|固定ページのテンプレート階層]]に従ってテンプレートを読み込みます。
<tt style="font-weight:bold; color:#036; font-size: 0.8em"><nowiki>http://domain.com/wp/category/your-cat/</nowiki></tt>, WordPress looks for a template file in the current Theme's directory that matches the category's ID. If the category's ID is 4, WordPress looks for a template file named <tt style="font-weight:bold; color:#036"><nowiki>category-4.php</nowiki></tt>. If it is missing, WordPress next looks for a generic category template file, <tt style="font-weight:bold; color:#036"><nowiki>category.php</nowiki></tt>. If this file does not exist either, WordPress looks for a generic archive template, <tt style="font-weight:bold; color:#036"><nowiki>archive.php</nowiki></tt>. If it is missing as well, WordPress falls back on the main Theme template file, <tt style="font-weight:bold; color:#036"><nowiki>index.php</nowiki></tt>.
+
# 静的フロントページが設定されていない場合、WordPress はテンプレートファイル <tt style="font-weight:bold; color:#036">home.php</tt> を探し、これを使用して要求されたページを生成します。
 +
# <tt style="font-weight:bold; color:#036">home.php</tt> が見つからない場合、WordPress は現在のテーマディレクトリ内でファイル <tt style="font-weight:bold; color:#036">index.php</tt> を探し、このテンプレートを使用してページを生成します。
  
If a visitor goes to your home page at <tt style="font-weight:bold; color:#036"><nowiki>http://domain.com/wp/</nowiki></tt>, WordPress looks for a template file called <tt style="font-weight:bold; color:#036">home.php</tt> and uses it to generate the requested page. If <tt style="font-weight:bold; color:#036">home.php</tt> is missing, WordPress looks for a file called <tt style="font-weight:bold; color:#036">index.php</tt> in the active theme's directory, and uses that template to generate the page.
+
<div id="Visual_Overview">
 +
== 概観図 ==
 +
</div>
  
 +
次の図は WordPress テンプレート階層に基づいて WordPress ページを生成する際、どのテンプレートが呼ばれるかを示します。
  
=== Visual Overview ===
+
[[Image:wp-template-hierarchy.jpg|750px|WordPress テンプレート階層構造図]]
 +
<small>[http://wpdocs.sourceforge.jp/wiki/images/wp-template-hierarchy.jpg Full-Size Image (jpg) - Image courtesy Michelle Schulp at marktimemedia.com]</small>
  
The following diagram shows which template files are called to generate a WordPress page based on the WordPress Template hierarchy. It also illustrates the relationship of [[Glossary#Query_string|Query Strings]] to corresponding [[Conditional Tags]].
+
[http://unofficialtokyo.com/wordpress-template-hierarchy 対話式バージョン]
  
[[Image:templatehierarchyexample.png||Graphic Example of the WordPress Template Hierarchy Structure]]
+
テンプレート関連の条件タグや BODY CSS クラスを含む詳細な階層図は [http://www.chipbennett.net/themes/template-hierarchy こちら] を参照。
  
<!-- Codex image page: http://codex.wordpress.org/Image:wp_Template_Hierarchy.png -->
+
WordCamp Minneapolis ではちょっと変わったテンプレート階層図が作成された。[http://2013.minneapolis.wordcamp.org/2013/04/27/wordpress-theme-template-poster/ PDF をダウンロード]
<small>[http://codex.wordpress.org/images/1/1d/wp_Template_Hierarchy.png Full-Size Image (png)]</small>
+
  
<small>[http://www.scoutpress.de/download/wp_Template_Hierarchy.zargo Download ArgoUML-0.22-File (zargo)] (external link)</small>
+
<div id="The_Template_Hierarchy_In_Detail">
 +
== ページ種類別テンプレート階層 ==
 +
</div>
  
=== The Template Hierarchy In Detail ===
+
以下、表示するページの種類別に、WordPress に呼ばれるテンプレートファイルの順序を示します。各セクションの見出しが、冒頭の問い「''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?''」の、「ある種類のページ」に当てはまります。
  
The following sections describe the order in which template files are being called by WordPress for each query type.
+
<div id="Home_Page_display">
 +
=== ホームページ表示 ===
 +
</div>
  
 +
サイトフロントページ、または固定ページの上にあるブログ投稿インデックスページの表示に使用されるテンプレートファイル。注意: サイトフロントページ上にある場合、フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。
 +
:#<tt style="font-weight:bold; color:#036">home.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
=== The Main page ===
+
<div id="Front_Page_display">
 +
=== フロントページ表示 ===
 +
</div>
  
:#home.php
+
サイトフロントページの表示に使用されるテンプレートファイル。フロントページはブログ投稿インデックス、または固定ページを表示します。フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。
:#index.php
+
:#<tt style="font-weight:bold; color:#036">front-page.php</tt> - [[Administration_Panels|管理]] > [[Administration_Panels#Reading|設定]] > [[Settings_Reading_SubPanel|表示設定]] セクションで「フロントページの表示」が「最新の投稿」または「固定ページ」どちらになっている場合でも使われる。
 +
:#[[#Page display|固定ページ表示ルール]] - [[Administration_Panels|管理]] > [[Administration_Panels#Reading|設定]] > [[Settings_Reading_SubPanel|表示設定]] セクションの「フロントページの表示」で、「フロントページ」が設定されている場合
 +
:#[[#Home Page display|ホームページ表示ルール]] - [[Administration_Panels|管理]] > [[Administration_Panels#Reading|設定]] > [[Settings_Reading_SubPanel|表示設定]] セクションの「フロントページの表示」で、「投稿ページ」が設定されている場合
  
=== Single Post page ===
+
<div id="Single_Post_display">
 +
=== 個別投稿表示 ===
 +
</div>
  
:#single.php
+
個別投稿ページの表示に使用されるテンプレートファイル。
:#index.php
+
:#<tt style="font-weight:bold; color:#036">single-{post_type}.php</tt> - [[投稿タイプ|投稿タイプ]]が <tt style="font-weight:bold; color:#036">product</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">single-product.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">single.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">singular.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
=== WordPress Page ===
+
<div id="Page_display">
 +
=== 固定ページ表示 ===
 +
</div>
  
:#The template selected from the "Page Template" dropdown when editing the [[Pages|Page]].
+
固定ページ (<tt>page</tt> 投稿タイプ) の表示に使用されるテンプレートファイル。
:#[[Pages|page.php]]
+
:#<tt style="font-weight:bold; color:#036">カスタムテンプレートファイル</tt> - [[Pages Add New SubPanel|ページ作成画面]]の「[[Pages#Page_Templates|テンプレート]]」ドロップダウンメニューで選択したテンプレート名。[[Class_Reference/WP_Theme#Get_Custom_Page_Templates|get_page_templates()]]参照。
:#index.php
+
:#<tt style="font-weight:bold; color:#036">page-{slug}.php</tt> - 固定ページのスラッグが '''recent-news''' ならば WordPress は <tt style="font-weight:bold; color:#036">page-recent-news.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">page-{id}.php</tt> - 固定ページIDが '''6''' ならば WordPress は <tt style="font-weight:bold; color:#036">page-6.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">page.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">singular.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
<div style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3">'''Note:''' This section refers to ''WordPress Pages'', not generic posts or web pages from your blog. Please see [[Pages|WordPress Pages]] for details.
+
参照: [[Pages|固定ページ]]
 +
 
 +
<div id="Category_display">
 +
=== カテゴリー表示 ===
 
</div>
 
</div>
  
 +
カテゴリーアーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">category-{slug}.php</tt> - カテゴリーのスラッグが <tt style="font-weight:bold; color:#036">news</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">category-news.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">category-{id}.php</tt> - カテゴリー ID が <tt style="font-weight:bold; color:#036">6</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">category-6.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">category.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
=== Category page ===
+
参照: [[Category Templates|カテゴリーテンプレート]]
  
:#The Category Template with a matching ID. If the category's ID were <tt style="font-weight:bold; color:#036">6</tt>, WordPress would look for [[Category Templates|category-6.php]]
+
<div id="Tag_display">
:#[[Category Templates|category.php]]
+
=== タグ表示 ===
:#[[Creating_an_Archive_Index|archive.php]]
+
</div>
:#index.php
+
  
<div style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3">'''Note:''' See [[Category Templates]] for details.</div>
+
タグアーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">tag-{slug}.php</tt> - タグのスラッグが <tt style="font-weight:bold; color:#036">sometag</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">tag-sometag.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">tag-{id}.php</tt> - タグ ID が <tt style="font-weight:bold; color:#036">6</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">tag-6.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">tag.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
 +
参照: [[Tag Templates|タグテンプレート]]/[[:en:Tag Templates|en]]
  
=== Tag page ===
+
<div id="Custom_Taxonomies_display">
 +
=== カスタム分類表示 ===
 +
</div>
  
:#The Tag Template with a matching slug. If the tag's slug were <tt style="font-weight:bold; color:#036">sometag</tt>, WordPress would look for [[Tag Templates|tag-sometag.php]]
+
[[タクソノミー|カスタム分類]]アーカイブインデックスページの表示に使用されるテンプレートファイル。
:#[[Tag Templates|tag.php]]
+
:#<tt style="font-weight:bold; color:#036">taxonomy-{taxonomy}-{term}.php</tt> - 分類名が <tt style="font-weight:bold; color:#036">sometax</tt>、項目が <tt style="font-weight:bold; color:#036">someterm</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">taxonomy-sometax-someterm.php</tt> を探す。投稿フォーマットの場合、分類名は 'post_format'、項目は 'post_format-{format}'、つまり <tt style="font-weight:bold; color:#036">taxonomy-post_format-post-format-link.php</tt>
:#[[Creating_an_Archive_Index|archive.php]]
+
:#<tt style="font-weight:bold; color:#036">taxonomy-{taxonomy}.php</tt> - 分類名が <tt style="font-weight:bold; color:#036">sometax</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">taxonomy-sometax.php</tt> を探す。
:#index.php
+
:#<tt style="font-weight:bold; color:#036">taxonomy.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
<div style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3">'''Note:''' See [[Tag Templates]] for details.</div>
+
参照: [[タクソノミー|カスタム分類]]
  
=== Author page ===
+
<div id="Custom_Post_Types_display">
 +
=== カスタム投稿タイプ表示 ===
 +
</div>
  
:#[[Author Templates|author.php]]
+
[[Post Types|カスタム投稿タイプ]] アーカイブインデックスページの表示に使用されるテンプレートファイル。
:#[[Creating_an_Archive_Index|archive.php]]
+
:#<tt style="font-weight:bold; color:#036">archive-{post_type}.php</tt> - [[Post Types|投稿タイプ]] が <tt style="font-weight:bold; color:#036">product</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">archive-product.php</tt> を探す。
:#index.php
+
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
 +
(カスタム投稿タイプの個別ページを表示する場合は[[#Single_Post_display|個別投稿表示]]を参照)
  
<div style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3">'''Note:''' The [[Author Templates|Author Template]] can be used to display information about authors.</div>
+
参照: [[Post Types|カスタム投稿タイプ]]
  
 +
<div id="Author_display">
 +
=== 作成者表示 ===
 +
</div>
  
=== Date page ===
+
作成者別アーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">author-{nicename}.php</tt> - 作成者の nicename が<tt style="font-weight:bold; color:#036">rami</tt>ならば WordPress は <tt style="font-weight:bold; color:#036">author-rami.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">author-{id}.php</tt> - 作成者の作成者ID が <tt style="font-weight:bold; color:#036">6</tt> ならば WordPress は <tt style="font-weight:bold; color:#036">author-6.php</tt> を探す。
 +
:#<tt style="font-weight:bold; color:#036">author.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
For example, a monthly archive page.
+
参照: [[Author Templates|作成者テンプレート]]/[[:en:Author Templates|en]]
  
:#date.php
+
<div id="Date_display">
:#[[Creating_an_Archive_Index|archive.php]]
+
=== 日付別表示 ===
:#index.php
+
</div>
  
 +
日付別アーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">date.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
=== Search Result page ===
 
  
:#[[Creating_a_Search_Page|search.php]]
+
<div id="Search_Result_display">
:#index.php
+
=== 検索結果表示 ===
 +
</div>
  
=== 404 (Not Found) page ===
+
検索結果インデックスページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">search.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
:#[[Creating_an_Error_404_Page|404.php]]
+
参照: [[Creating a Search Page|検索テンプレート]]
:#index.php
+
  
<div style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3">'''Note:''' See [[Creating an Error 404 Page]] for more information about the 404 template.</div>
+
<div id="404_.28Not_Found.29_display">
 +
=== 404 (Not Found) 表示 ===
 +
</div>
  
 +
サーバーエラー 404 ページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">404.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
=== Attachment page ===
+
参照: [[Creating_an_Error_404_Page|404 テンプレート]]
  
:#attachment.php
+
<div id="Attachment_display">
:#index.php
+
=== 添付ファイル表示 ===
 +
</div>
  
<div style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3">'''Note:''' See [[Using Image and File Attachments#Inserting_Files|Image attachments]] for more information about this template.</div>
+
個別添付ファイルページ (<tt>attachment</tt> 投稿タイプ) の表示に使用されるテンプレートファイル。
  
== See also ==
+
:#<tt style="font-weight:bold; color:#036">{MIME_type}.php</tt> - 任意の [http://en.wikipedia.org/wiki/Internet_media_type MIME タイプ] (<tt style="font-weight:bold; color:#036">image.php</tt>, <tt style="font-weight:bold; color:#036">video.php</tt>, <tt style="font-weight:bold; color:#036">application.php</tt>)。<tt>text/plain</tt>ならば、以下の順番: 
 +
:##<tt style="font-weight:bold; color:#036">text.php</tt>
 +
:##<tt style="font-weight:bold; color:#036">plain.php</tt>
 +
:##<tt style="font-weight:bold; color:#036">textplain.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">attachment.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">single-attachment.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">single.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
 +
 
 +
=== Embeds ===
 +
 
 +
embed テンプレートファイルは embed 機能で埋め込まれる投稿のレンダリングに使用されます。[[Version 4.5]] から WordPress は次の順序を使用します。
 +
 
 +
:#<tt style="font-weight:bold; color:#036">embed-{post-type}-{post_format}.php</tt> - まず WordPress は特定の投稿に関するテンプレートを探します。例えば 投稿タイプが「product」で、「音声(audio)」フォーマットを持つ場合 WordPress は「<tt>embed-product-audio.php</tt>」を探します。
 +
:#<tt style="font-weight:bold; color:#036">embed-{post-type}.php</tt> – 投稿タイプが「car」であれば WordPress は「<tt>embed-car.php</tt>」を探します。
 +
:#<tt style="font-weight:bold; color:#036">embed.php</tt> – そして WordPress は「<tt>embed.php</tt>」に落ちます。
 +
:#どのテンプレートファイルも見つからなければ最後に WordPress は <tt style="font-weight:bold; color:#036">wp-includes/theme-compat/embed.php</tt>  を使用します。
 +
 
 +
== 階層のフィルター<!--Filter Hierarchy--> ==
 +
 
 +
WordPress テンプレートシステムでは階層にフィルターを適用できます。[[関数リファレンス/get_query_template|get_query_template()]] /[[:en:Function_Reference/get_query_template|en]] 関数内にあるフィルターはファイル名 <tt style="font-weight:bold; color:#036">"{$type}_template"</tt> です。このとき <tt style="font-weight:bold; color:#036">$type</tt> は階層内の拡張子 <tt style="font-weight:bold; color:#036">.php</tt> なしのファイル名。
 +
 
 +
すべてのリスト:
 +
 
 +
* 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
 +
 
 +
=== 例<!--Example--> ===
 +
 
 +
例として、デフォルトの作成者別階層を以下に挙げます。
 +
 
 +
* <tt style="font-weight:bold; color:#036">author-{nicename}.php</tt>
 +
* <tt style="font-weight:bold; color:#036">author-{id}.php</tt>
 +
* <tt style="font-weight:bold; color:#036">author.php</tt>
 +
 
 +
ここで <tt style="font-weight:bold; color:#036">author.php</tt> の前に <tt style="font-weight:bold; color:#036">author-{role}.php</tt> を追加する場合、'author_template' フックを使用して実際の階層を操作できます。/author/username に要求があり、username が編集者権限グループに所属するなら author-editor.php が現在のテーマディレクトリ内で探され、存在すれば表示に使用されます。
 +
 
 +
<pre>
 +
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' );
 +
</pre>
 +
 
 +
<div id="Changelog">
 +
 
 +
== 変更履歴 ==
 +
</div>
 +
* [[Version 4.3|4.3]]: singular.php を追加。
 +
* [[Version 3.1|3.1]]: [[#Custom Post Types display|archive-{post_type}.php]] を追加。
 +
* [[Version 3.0|3.0]]: [[#Single Post display|single-{post_type}.php]]、[[#Author_display|author-{nicename}.php]]、[[#Author_display|author-{id}.php]]、[[#Custom Taxonomies display|taxonomy.php]]、[[#Custom Taxonomies display|taxonomy-{taxonomy}.php]]、[[#Custom Taxonomies display|taxonomy-{taxonomy}-{term}.php]] を追加。
 +
* [[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]] を追加。
 +
* [[Version 2.3|2.3]] : [[#Tag_page|タグページ]]を追加。
 +
* [[Version 2.0|2.0]] : [[#Attachment_display|添付ファイルテンプレート]]を追加。
 +
* [[Version 1.5|1.5]] : テーマシステムの導入
 +
 
 +
== ソースファイル ==
 +
 
 +
* テンプレート階層関数群は {{BrowseSource|wp-includes/theme.php}} で定義されています。
 +
* テンプレートロード階層は {{Trac|wp-includes/template-loader.php}} で定義されています。
 +
 
 +
== プラグイン ==
 +
 
 +
* [http://wordpress.org/plugins/what-the-file/ What The File - ページの表示に使用されているファイルやテンプレートの部品を表示するオプションをツールバーに追加する。]
 +
 
 +
<!-- 冒頭のガイドテンプレートで代用
 +
==  See also ==
  
 
The following links have direct relevance to the topic of this article.
 
The following links have direct relevance to the topic of this article.
  
 
[[Theme Development]] | [[The Loop]] | [[Conditional Tags]] | [[Template Tags]] | [[Using Permalinks]]
 
[[Theme Development]] | [[The Loop]] | [[Conditional Tags]] | [[Template Tags]] | [[Using Permalinks]]
 +
-->
 +
 +
== 関連<!--Related--> ==
 +
 +
* [[テーマの作成]]
 +
* [[ループ]]
 +
* [[条件分岐タグ]]
 +
* [[テンプレートタグ]]
 +
* [[パーマリンクの使い方]]
 +
 +
{{Theme Templates}}
 +
 +
== 外部資料 ==
 +
* [http://ounziw.com/2012/06/12/css-hierarchy/ テンプレート階層に応じたスタイルシートを出力する方法]
 +
  
{{原文|Template Hierarchy}}
+
[https://developer.wordpress.org/themes/basics/template-hierarchy/ 最新英語版 Theme Handbook >> Theme Basics >> Template Hierarchy]
  
[[Category:Design and Layout]]
+
{{DEFAULTSORT:てんふれえとかいそう}}
[[Category:Advanced Topics]]
+
[[Category:デザインとレイアウト]]
[[Category:Templates]]
+
[[Category:上級トピック]]
[[Category:Template Tags]]
+
[[Category:テンプレート]]
 +
[[Category:テンプレートタグ]]
 +
[[Category:UI Link]]
 +
<!--
 +
[[Category:wp2.0]]
 +
[[Category:wp2.3]]
 +
[[Category:wp2.9]]
 +
[[Category:wp3.0]]
 +
-->
  
 
[[en:Template Hierarchy]]
 
[[en:Template Hierarchy]]
 +
[[fr:Hiérarchie de modeles]]
 +
[[it:Gerarchia dei template]]
 +
[[ja:テンプレート階層]]
 +
[[ko:Template Hierarchy]]
 +
[[ru:Иерархия шаблонов]]
 +
[[es:Jerarquía de plantillas]]
 +
[[pt-br:Hierarquia de Modelos Wordpress]]
 +
[[zh-hans:模板层次]]
 +
<!--[[pt-br:Hierarquia de Temas Wordpress]]-->

2016年3月21日 (月) 15:23時点における最新版

はじめに

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