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

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

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

提供: WordPress Codex 日本語版
移動先: 案内検索
(フロントページ表示: 誤字訂正)
(embed template 翻訳)
 
(5人の利用者による、間の21版が非表示)
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--> ==
-->
+
== はじめに ==
+
  
 
WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。
 
WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。
  
=== このドキュメンテーションの目的 ===
+
=== このドキュメンテーションの目的<!--What this article is about--> ===
  
 
このドキュメンテーションは、次の疑問に答えてくれるでしょう。
 
このドキュメンテーションは、次の疑問に答えてくれるでしょう。
  
<blockquote id="question">
+
<blockquote>
 
''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?''
 
''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?''
 
</blockquote>
 
</blockquote>
  
=== このドキュメンテーションの使い方 ===
+
=== このドキュメンテーションの使い方<!--Who might find this useful--> ===
  
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 がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。
+
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 がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。
  
{| cellspacing="3"
+
<div id="Using Conditional Tags">
|- valign="top"
+
== 条件分岐タグの利用==
|class="MainPageKnowledgeBaseBox" style="border: 1px solid #ffc9c9; padding: 1em; color: #000000; background-color: #fff3f3"|
+
</div>
  
'''条件分岐タグを使う'''
+
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|テーマの作成ページの「クエリベースのテンプレート」セクション]]を参照してください。
  
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|テーマの作成ページの「クエリベースのテンプレート」セクション]]をご覧ください。
+
== テンプレートファイルの階層<!--The Template File Hierarchy-->==
|}
+
  
<div id="Visual_Overview">
+
=== 概念<!--The General Idea--> ===
== 概観図 ==
+
</div>
+
  
次の図は、WordPress テンプレート階層に基づいてウェブページを生成する際に呼ばれるテンプレートファイルを図解したものです。訪問者がアクセスする各種ページの[[用語集#Query string|クエリ文字列]]と、それに対応する[[Conditional Tags|条件分岐タグ]]、そして、WordPress が探すテンプレートファイル名の順序を示しています。
+
WordPress は[[用語集#クエリ文字列|クエリ文字列]] &mdash; Web サイトの各リンク内に含まれる情報 &mdash; を使用して、ページの表示にどのテンプレートあるいはテンプレートの集合を使用すべきかを決定します。
  
* [[:en:Image:Template_Hierarchy.png|WordPress テンプレート階層構造図]] (画像は英語版Codex にあります)
+
まず WordPress はすべてのクエリ文字列とクエリタイプを照合し、どの種類のページ(検索ページ、カテゴリーページ、ホームページ等) が要求されているかを決定します。
* [http://codex.wordpress.org/images/1/18/Template_Hierarchy.png フルサイズ画像(PNG形式)]
+
  
<div id="The_Template_File_Hierarchy">
+
次にテンプレートが選択され &mdash; そして、Web ページが生成されます。テンプレートは、WordPress テンプレート階層で規定された順番に、WordPress テーマ内で該当のテンプレートが利用かどうかにより決まります。
  
== 仕組み ==
+
WordPress は現在のテーマディレクトリ内から特定のファイル名でテンプレートを探し、以下の該当の節で挙げたリストから''最初に見つけた''テンプレートファイルを使用します。
</div>
+
  
訪問者が WordPress サイト上のページにアクセスしたとき、WordPress は次のように動きます。
+
基本の <tt style="font-weight:bold; color:#036">index.php</tt> テンプレートファイルはテーマに必須ですが、テーマ開発者は他のテンプレートファイルを含めるかどうかを選択できます。 WordPress は 一致する名前のテンプレートファイルが見つからなければそれをスキップして次の候補のファイル名を探します。最後まで一致するテンプレートファイルが見つからなければ <tt style="font-weight:bold; color:#036">index.php</tt> (テーマのホームページテンプレートファイル) が使用されます。
  
# URI に含まれる[[用語集#Query_string|クエリ文字列]]とクエリタイプを照合し、要求されているページの種類(メインページ、カテゴリーページなど)を判断。
+
=== 例<!--Examples--> ===
# 該当するページ種類の[[#ページ種類別テンプレート階層|テンプレート階層]]に基づき、現在のテーマディレクトリ内からテンプレートファイルを探す。
+
# 最初に見つかったテンプレートファイルを用いて、要求されたページを生成。
+
  
例えば、ブログが <code><nowiki>http://example.com/wp/</nowiki></code> にあり、訪問者が <code><nowiki>http://example.com/wp/category/apple/</nowiki></code> という「りんご」カテゴリーのアーカイブページにアクセスしたとしましょう。WordPress は、現在のテーマディレクトリの中から「りんご」カテゴリーに使えるテンプレートファイルを探します。
+
例えば、ブログが <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 はテンプレート階層を使用して、以下の順番で正しいファイルを探し、生成します。
  
[[#Category page|カテゴリーページのテンプレート階層]]は次のとおりです。WordPress はこのリストの'''上から順に'''、ファイルがないかどうか探していき、'''最初に'''見つけたファイルを使います。
+
WordPress は現在のテーマディレクトリ内で、カテゴリーID に合致するテンプレートファイルを探します。
<blockquote>
+
# category-''slug''.php -- 特定のカテゴリー用テンプレート
+
# category-''ID''.php -- 特定のカテゴリー用テンプレート
+
# category.php -- カテゴリーの汎用テンプレート
+
# archive.php -- 汎用アーカイブテンプレート(タグ・日別アーカイブなどと共用)
+
# index.php
+
</blockquote>
+
「りんご」カテゴリーのスラッグが <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> のみでいいのです。
+
# カテゴリー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> を使用します。
  
<div id="Using Conditional Tags">
+
ユーザーがホームページ <tt style="font-weight:bold; color:#036"><nowiki>http://example.com/blog/</nowiki></tt> にアクセスすると、以下の順番でテンプレートファイルが決定されます。
== 条件分岐タグの利用 ==
+
 
 +
# WordPress は、まず、[[Creating_a_Static_Front_Page|静的フロントページ]]があるかどうかを判断します。静的フロントページが設定されている場合、WordPress は[[#Page_display|固定ページのテンプレート階層]]に従ってテンプレートを読み込みます。
 +
# 静的フロントページが設定されていない場合、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> を探し、このテンプレートを使用してページを生成します。
 +
 
 +
<div id="Visual_Overview">
 +
== 概観図 ==
 
</div>
 
</div>
  
WordPress がページの種類(クエリタイプ)に合うテンプレートファイルを特定する方法は一つではありません。'''[[Conditional Tags|条件分岐タグ]]'''は表示しようとしているページの種類を判定できるので、その判定結果によってテンプレートファイルを切り替えたり、複数のページ種類で共通のテンプレートファイルを使い、その中の一部分だけをページ種類に応じて切り替える、といった細かい制御もできます。具体的な活用例として、デフォルトテーマの <code>sidebar.php</code> が参考になるでしょう。詳しくは[[Conditional Tags|条件分岐タグ]]および[[テーマの作成#Query-based Templates|テーマの作成 - クエリベースのテンプレート]]をご覧ください。
+
次の図は WordPress テンプレート階層に基づいて WordPress ページを生成する際、どのテンプレートが呼ばれるかを示します。
 +
 
 +
[[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>
 +
 
 +
[http://unofficialtokyo.com/wordpress-template-hierarchy 対話式バージョン]
 +
 
 +
テンプレート関連の条件タグや BODY CSS クラスを含む詳細な階層図は [http://www.chipbennett.net/themes/template-hierarchy こちら] を参照。
 +
 
 +
WordCamp Minneapolis ではちょっと変わったテンプレート階層図が作成された。[http://2013.minneapolis.wordcamp.org/2013/04/27/wordpress-theme-template-poster/ PDF をダウンロード]
  
 
<div id="The_Template_Hierarchy_In_Detail">
 
<div id="The_Template_Hierarchy_In_Detail">
78行目: 79行目:
 
</div>
 
</div>
  
<!-- 英語版の Examples セクションの後半より -->訪問者がサイトのメインページ(ホームページ)にアクセスした場合、WordPress はまず最初に、[[Creating_a_Static_Front_Page|静的フロントページ]]<!-- リンク先は表示設定画面のほうがいいかも -->かどうかを判断します。静的フロントページが設定されている場合、[[#WordPress_Page|固定ページのテンプレート階層]]に従ってテンプレートを読み込みます。設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。
+
サイトフロントページ、または固定ページの上にあるブログ投稿インデックスページの表示に使用されるテンプレートファイル。注意: サイトフロントページ上にある場合、フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。
 +
:#<tt style="font-weight:bold; color:#036">home.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
# home.php
+
<div id="Front_Page_display">
# index.php
+
=== フロントページ表示 ===
 +
</div>
 +
 
 +
サイトフロントページの表示に使用されるテンプレートファイル。フロントページはブログ投稿インデックス、または固定ページを表示します。フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。
 +
:#<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|表示設定]] セクションの「フロントページの表示」で、「投稿ページ」が設定されている場合
  
 
<div id="Single_Post_display">
 
<div id="Single_Post_display">
87行目: 96行目:
 
</div>
 
</div>
  
#single-{post_type}.php - [[関数リファレンス/register_post_type|投稿タイプ]] が <code>videos</code> の場合は single-videos.php ([[Version 3.0|バージョン 3.0]] 以降)
+
個別投稿ページの表示に使用されるテンプレートファイル。
# single.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> を探す。
# index.php
+
:#<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>
  
 
<div id="Page_display">
 
<div id="Page_display">
95行目: 106行目:
 
</div>
 
</div>
  
[[Pages|固定ページ]]:
+
固定ページ (<tt>page</tt> 投稿タイプ) の表示に使用されるテンプレートファイル。
# カスタムテンプレート: [[Pages Add New SubPanel|ページ作成画面]]の「[[Pages#Page_Templates|ページテンプレート]]」ドロップダウンメニューで選択したファイル名
+
:#<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()]]参照。
# page-''slug''.php - 例えば固定ページのスラッグが "about" の場合は page-about.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> を探す。
# page-''ID''.php - 例えば固定ページの ID が6の場合は page-6.php  
+
:#<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> を探す。
# page.php
+
:#<tt style="font-weight:bold; color:#036">page.php</tt>
# index.php
+
:#<tt style="font-weight:bold; color:#036">singular.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
: これは[[Pages|「固定ページ」]]を指し、一般的なブログ投稿のページや Web ページのことではありません。
+
参照: [[Pages|固定ページ]]
 
+
<div id="Front_Page_display">
+
=== フロントページ表示 ===
+
</div>
+
 
+
[[Version 3.0|バージョン 3.0]] 以降。
+
 
+
# front-page.php - [[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|表示設定]] セクションの「フロントページの表示」で、「投稿ページ」が設定されている場合
+
  
 
<div id="Category_display">
 
<div id="Category_display">
 
 
=== カテゴリー表示 ===
 
=== カテゴリー表示 ===
 
</div>
 
</div>
  
[[Category Templates|カテゴリーテンプレート]]。
+
カテゴリーアーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<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-''slug''.php - 例えばカテゴリーのスラッグが "news" の場合は category-news.php
+
参照: [[Category Templates|カテゴリーテンプレート]]
# category-''ID''.php - 例えばカテゴリーID 6 用のテンプレートであれば category-6.php
+
# [[Category Templates|category.php]]
+
# archive.php
+
# index.php
+
  
 
<div id="Tag_display">
 
<div id="Tag_display">
131行目: 133行目:
 
</div>
 
</div>
  
[[Tag Templates|タグテンプレート]]/[[:en:Tag Templates|en]]。
+
タグアーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<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-''slug''.php
+
参照: [[Tag Templates|タグテンプレート]]/[[:en:Tag Templates|en]]
# tag-''ID''.php
+
# tag.php
+
# archive.php
+
# index.php
+
  
 
<div id="Custom_Taxonomies_display">
 
<div id="Custom_Taxonomies_display">
143行目: 146行目:
 
</div>
 
</div>
  
[[カスタム分類]]テンプレート。
+
[[タクソノミー|カスタム分類]]アーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<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> 。
 +
:#<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> を探す。
 +
:#<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>
  
# taxonomy-{taxonomy}-{term}.php - 例えば分類名が "sometax"、スラッグが "someterm" の場合は taxonomy-sometax-someterm.php
+
参照: [[タクソノミー|カスタム分類]]
# taxonomy-{taxonomy}.php - 例えば分類名が "sometax" の場合は taxonomy-sometax.php
+
 
# taxonomy.php
+
<div id="Custom_Post_Types_display">
# archive.php
+
=== カスタム投稿タイプ表示 ===
# index.php
+
</div>
 +
 
 +
[[Post Types|カスタム投稿タイプ]] アーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<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> を探す。
 +
:#<tt style="font-weight:bold; color:#036">archive.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
 +
(カスタム投稿タイプの個別ページを表示する場合は[[#Single_Post_display|個別投稿表示]]を参照)
 +
 
 +
参照: [[Post Types|カスタム投稿タイプ]]
  
 
<div id="Author_display">
 
<div id="Author_display">
155行目: 171行目:
 
</div>
 
</div>
  
[[Author Templates|作成者テンプレート]]/[[:en:Author Templates|en]]。
+
作成者別アーカイブインデックスページの表示に使用されるテンプレートファイル。
 +
:#<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>
  
# author-{nicename}.php  - 例えば作成者の nicename が "hanako" の場合は author-hanako.php ([[Version 3.0|バージョン 3.0]] 以降)
+
参照: [[Author Templates|作成者テンプレート]]/[[:en:Author Templates|en]]
#author-{id}.php - 例えば作成者の ID が "6" の場合は author-6.php ([[Version 3.0|バージョン 3.0]] 以降)
+
# author.php
+
# archive.php
+
# index.php
+
  
 
<div id="Date_display">
 
<div id="Date_display">
167行目: 184行目:
 
</div>
 
</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>
  
# date.php
 
# archive.php
 
# index.php
 
  
 
<div id="Search_Result_display">
 
<div id="Search_Result_display">
177行目: 194行目:
 
</div>
 
</div>
  
[[Creating a Search Page|検索テンプレート]]。
+
検索結果インデックスページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">search.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
# search.php
+
参照: [[Creating a Search Page|検索テンプレート]]
# index.php
+
  
 
<div id="404_.28Not_Found.29_display">
 
<div id="404_.28Not_Found.29_display">
186行目: 204行目:
 
</div>
 
</div>
  
[[Creating_an_Error_404_Page|404 テンプレート]]。
+
サーバーエラー 404 ページの表示に使用されるテンプレートファイル。
 +
:#<tt style="font-weight:bold; color:#036">404.php</tt>
 +
:#<tt style="font-weight:bold; color:#036">index.php</tt>
  
# 404.php
+
参照: [[Creating_an_Error_404_Page|404 テンプレート]]
# index.php
+
  
 
<div id="Attachment_display">
 
<div id="Attachment_display">
195行目: 214行目:
 
</div>
 
</div>
  
記事本文への[[Using Image and File Attachments#Inserting Files|画像添付]]/[[:en:Using Image and File Attachments#Inserting Files|en]]で 'Linked to Page' を選んだ場合に、画像のリンク先として使われるページ
+
個別添付ファイルページ (<tt>attachment</tt> 投稿タイプ) の表示に使用されるテンプレートファイル。
  
# ''MIME_TYPE''.php - image.php, video.php, audio.php, application.php, その他 [http://en.wikipedia.org/wiki/Internet_media_type MIME type] の最初の部分のファイル名
+
:#<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>ならば、以下の順番: 
# attachment.php
+
:##<tt style="font-weight:bold; color:#036">text.php</tt>
# single.php
+
:##<tt style="font-weight:bold; color:#036">plain.php</tt>
# index.php
+
:##<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 id="Changelog">
 +
 
== 変更履歴 ==
 
== 変更履歴 ==
 
</div>
 
</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 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.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.3|2.3]] : [[#Tag_page|タグページ]]を追加。
 
* [[Version 2.0|2.0]] : [[#Attachment_display|添付ファイルテンプレート]]を追加。
 
* [[Version 2.0|2.0]] : [[#Attachment_display|添付ファイルテンプレート]]を追加。
 +
* [[Version 1.5|1.5]] : テーマシステムの導入
  
 
== ソースファイル ==
 
== ソースファイル ==
  
テンプレート階層関数群は {{BrowseSource|wp-includes/theme.php}} にあります。
+
* テンプレート階層関数群は {{BrowseSource|wp-includes/theme.php}} で定義されています。
 +
* テンプレートロード階層は {{Trac|wp-includes/template-loader.php}} で定義されています。
 +
 
 +
== プラグイン ==
 +
 
 +
* [http://wordpress.org/plugins/what-the-file/ What The File - ページの表示に使用されているファイルやテンプレートの部品を表示するオプションをツールバーに追加する。]
  
 
<!-- 冒頭のガイドテンプレートで代用
 
<!-- 冒頭のガイドテンプレートで代用
223行目: 319行目:
 
-->
 
-->
  
{{原文|Template Hierarchy|90907}}<!-- 2010-06-26T16:36:54 Ramiy 版 -->
+
== 関連<!--Related--> ==
 +
 
 +
* [[テーマの作成]]
 +
* [[ループ]]
 +
* [[条件分岐タグ]]
 +
* [[テンプレートタグ]]
 +
* [[パーマリンクの使い方]]
 +
 
 +
{{Theme Templates}}
 +
 
 +
== 外部資料 ==
 +
* [http://ounziw.com/2012/06/12/css-hierarchy/ テンプレート階層に応じたスタイルシートを出力する方法]
 +
 
 +
 
 +
[https://developer.wordpress.org/themes/basics/template-hierarchy/ 最新英語版 Theme Handbook >> Theme Basics >> Template Hierarchy]
  
 
{{DEFAULTSORT:てんふれえとかいそう}}
 
{{DEFAULTSORT:てんふれえとかいそう}}
230行目: 340行目:
 
[[Category:テンプレート]]
 
[[Category:テンプレート]]
 
[[Category:テンプレートタグ]]
 
[[Category:テンプレートタグ]]
 +
[[Category:UI Link]]
 +
<!--
 
[[Category:wp2.0]]
 
[[Category:wp2.0]]
 
[[Category:wp2.3]]
 
[[Category:wp2.3]]
 
[[Category:wp2.9]]
 
[[Category:wp2.9]]
 
[[Category:wp3.0]]
 
[[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]]-->
 
<!--[[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