- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
「テンプレート階層」の版間の差分
細 (→仕組み) |
Akira Tachibana (トーク | 投稿記録) (embed template 翻訳) |
||
(2人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
{{テーマ・テンプレートガイド|テンプレート}} | {{テーマ・テンプレートガイド|テンプレート}} | ||
− | <!-- | + | |
− | + | == はじめに<!--Introduction--> == | |
− | --> | + | |
− | + | ||
WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。 | WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。 | ||
− | === このドキュメンテーションの目的 === | + | === このドキュメンテーションの目的<!--What this article is about--> === |
このドキュメンテーションは、次の疑問に答えてくれるでしょう。 | このドキュメンテーションは、次の疑問に答えてくれるでしょう。 | ||
− | <blockquote | + | <blockquote> |
''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?'' | ''ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?'' | ||
</blockquote> | </blockquote> | ||
− | === このドキュメンテーションの使い方 === | + | === このドキュメンテーションの使い方<!--Who might find this useful--> === |
− | 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 がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。 |
− | + | <div id="Using Conditional Tags"> | |
− | + | == 条件分岐タグの利用== | |
− | + | </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|テーマの作成ページの「クエリベースのテンプレート」セクション]]を参照してください。 | |
− | + | == テンプレートファイルの階層<!--The Template File Hierarchy-->== | |
− | + | ||
− | < | + | === 概念<!--The General Idea--> === |
− | == | + | |
− | + | ||
− | + | WordPress は[[用語集#クエリ文字列|クエリ文字列]] — Web サイトの各リンク内に含まれる情報 — を使用して、ページの表示にどのテンプレートあるいはテンプレートの集合を使用すべきかを決定します。 | |
− | + | まず WordPress はすべてのクエリ文字列とクエリタイプを照合し、どの種類のページ(検索ページ、カテゴリーページ、ホームページ等) が要求されているかを決定します。 | |
− | + | 次にテンプレートが選択され — そして、Web ページが生成されます。テンプレートは、WordPress テンプレート階層で規定された順番に、WordPress テーマ内で該当のテンプレートが利用かどうかにより決まります。 | |
− | + | ||
− | + | WordPress は現在のテーマディレクトリ内から特定のファイル名でテンプレートを探し、以下の該当の節で挙げたリストから''最初に見つけた''テンプレートファイルを使用します。 | |
− | == | + | 基本の <tt style="font-weight:bold; color:#036">index.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> にあり、ユーザーがカテゴリーページへのリンク <tt style="font-weight:bold; color:#036"><nowiki>http://example.com/blog/category/your-cat/</nowiki></tt> をクリックしたとします。WordPress はテンプレート階層を使用して、以下の順番で正しいファイルを探し、生成します。 | |
− | + | ||
− | + | ||
− | + | WordPress は現在のテーマディレクトリ内で、カテゴリーID に合致するテンプレートファイルを探します。 | |
− | WordPress | + | |
− | + | # カテゴリー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> を探します。 |
− | # category- | + | # これもなければ、WordPress はメインテーマテンプレートファイル <tt style="font-weight:bold; color:#036">index.php</tt> を使用します。 |
− | # | + | |
− | # category.php | + | |
− | # archive.php | + | |
− | # index.php | + | |
− | </ | + | |
− | + | ユーザーがホームページ <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> | |
− | + | ||
− | + | 次の図は 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"> | ||
93行目: | 79行目: | ||
</div> | </div> | ||
− | < | + | サイトフロントページ、または固定ページの上にあるブログ投稿インデックスページの表示に使用されるテンプレートファイル。注意: サイトフロントページ上にある場合、フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。 |
+ | :#<tt style="font-weight:bold; color:#036">home.php</tt> | ||
+ | :#<tt style="font-weight:bold; color:#036">index.php</tt> | ||
− | # | + | <div id="Front_Page_display"> |
− | # | + | === フロントページ表示 === |
+ | </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"> | ||
102行目: | 96行目: | ||
</div> | </div> | ||
− | #single-{post_type}.php - [[ | + | 個別投稿ページの表示に使用されるテンプレートファイル。 |
− | # 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"> | ||
110行目: | 106行目: | ||
</div> | </div> | ||
− | + | 固定ページ (<tt>page</tt> 投稿タイプ) の表示に使用されるテンプレートファイル。 | |
− | # | + | :#<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-'' | + | :#<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-'' | + | :#<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|固定ページ]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<div id="Category_display"> | <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 Templates|カテゴリーテンプレート]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<div id="Tag_display"> | <div id="Tag_display"> | ||
147行目: | 133行目: | ||
</div> | </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]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<div id="Custom_Taxonomies_display"> | <div id="Custom_Taxonomies_display"> | ||
159行目: | 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> | ||
− | + | 参照: [[タクソノミー|カスタム分類]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<div id="Custom_Post_Types_display"> | <div id="Custom_Post_Types_display"> | ||
171行目: | 159行目: | ||
</div> | </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"> | ||
183行目: | 171行目: | ||
</div> | </div> | ||
− | + | 作成者別アーカイブインデックスページの表示に使用されるテンプレートファイル。 | |
+ | :#<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 Templates|作成者テンプレート]]/[[:en:Author Templates|en]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<div id="Date_display"> | <div id="Date_display"> | ||
195行目: | 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> | ||
− | |||
− | |||
− | |||
<div id="Search_Result_display"> | <div id="Search_Result_display"> | ||
205行目: | 194行目: | ||
</div> | </div> | ||
− | + | 検索結果インデックスページの表示に使用されるテンプレートファイル。 | |
+ | :#<tt style="font-weight:bold; color:#036">search.php</tt> | ||
+ | :#<tt style="font-weight:bold; color:#036">index.php</tt> | ||
− | + | 参照: [[Creating a Search Page|検索テンプレート]] | |
− | + | ||
<div id="404_.28Not_Found.29_display"> | <div id="404_.28Not_Found.29_display"> | ||
214行目: | 204行目: | ||
</div> | </div> | ||
− | + | サーバーエラー 404 ページの表示に使用されるテンプレートファイル。 | |
+ | :#<tt style="font-weight:bold; color:#036">404.php</tt> | ||
+ | :#<tt style="font-weight:bold; color:#036">index.php</tt> | ||
− | + | 参照: [[Creating_an_Error_404_Page|404 テンプレート]] | |
− | + | ||
<div id="Attachment_display"> | <div id="Attachment_display"> | ||
223行目: | 214行目: | ||
</div> | </div> | ||
− | + | 個別添付ファイルページ (<tt>attachment</tt> 投稿タイプ) の表示に使用されるテンプレートファイル。 | |
− | # | + | :#<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 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.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]] を追加。 | ||
239行目: | 300行目: | ||
* [[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 - ページの表示に使用されているファイルやテンプレートの部品を表示するオプションをツールバーに追加する。] | ||
<!-- 冒頭のガイドテンプレートで代用 | <!-- 冒頭のガイドテンプレートで代用 | ||
251行目: | 318行目: | ||
[[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/ テンプレート階層に応じたスタイルシートを出力する方法] | * [http://ounziw.com/2012/06/12/css-hierarchy/ テンプレート階層に応じたスタイルシートを出力する方法] | ||
− | + | [https://developer.wordpress.org/themes/basics/template-hierarchy/ 最新英語版 Theme Handbook >> Theme Basics >> Template Hierarchy] | |
{{DEFAULTSORT:てんふれえとかいそう}} | {{DEFAULTSORT:てんふれえとかいそう}} | ||
262行目: | 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 に合致するテンプレートファイルを探します。
- カテゴリーID が 4 なら、WordPress はテンプレートファイル category-4.php を探します。
- 見つからなければ、次に WordPress は一般的なカテゴリーテンプレートファイル category.php を探します。
- このファイルもなければ、WordPress は一般的なアーカイブテンプレートファイル archive.php を探します。
- これもなければ、WordPress はメインテーマテンプレートファイル index.php を使用します。
ユーザーがホームページ http://example.com/blog/ にアクセスすると、以下の順番でテンプレートファイルが決定されます。
- WordPress は、まず、静的フロントページがあるかどうかを判断します。静的フロントページが設定されている場合、WordPress は固定ページのテンプレート階層に従ってテンプレートを読み込みます。
- 静的フロントページが設定されていない場合、WordPress はテンプレートファイル home.php を探し、これを使用して要求されたページを生成します。
- home.php が見つからない場合、WordPress は現在のテーマディレクトリ内でファイル index.php を探し、このテンプレートを使用してページを生成します。
概観図
次の図は WordPress テンプレート階層に基づいて WordPress ページを生成する際、どのテンプレートが呼ばれるかを示します。
Full-Size Image (jpg) - Image courtesy Michelle Schulp at marktimemedia.com
テンプレート関連の条件タグや BODY CSS クラスを含む詳細な階層図は こちら を参照。
WordCamp Minneapolis ではちょっと変わったテンプレート階層図が作成された。PDF をダウンロード
ページ種類別テンプレート階層
以下、表示するページの種類別に、WordPress に呼ばれるテンプレートファイルの順序を示します。各セクションの見出しが、冒頭の問い「ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?」の、「ある種類のページ」に当てはまります。
ホームページ表示
サイトフロントページ、または固定ページの上にあるブログ投稿インデックスページの表示に使用されるテンプレートファイル。注意: サイトフロントページ上にある場合、フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。
- home.php
- index.php
フロントページ表示
サイトフロントページの表示に使用されるテンプレートファイル。フロントページはブログ投稿インデックス、または固定ページを表示します。フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。
個別投稿表示
個別投稿ページの表示に使用されるテンプレートファイル。
- single-{post_type}.php - 投稿タイプが product ならば WordPress は single-product.php を探す。
- single.php
- singular.php
- index.php
固定ページ表示
固定ページ (page 投稿タイプ) の表示に使用されるテンプレートファイル。
- カスタムテンプレートファイル - ページ作成画面の「テンプレート」ドロップダウンメニューで選択したテンプレート名。get_page_templates()参照。
- page-{slug}.php - 固定ページのスラッグが recent-news ならば WordPress は page-recent-news.php を探す。
- page-{id}.php - 固定ページIDが 6 ならば WordPress は page-6.php を探す。
- page.php
- singular.php
- index.php
参照: 固定ページ
カテゴリー表示
カテゴリーアーカイブインデックスページの表示に使用されるテンプレートファイル。
- category-{slug}.php - カテゴリーのスラッグが news ならば WordPress は category-news.php を探す。
- category-{id}.php - カテゴリー ID が 6 ならば WordPress は category-6.php を探す。
- category.php
- archive.php
- index.php
参照: カテゴリーテンプレート
タグ表示
タグアーカイブインデックスページの表示に使用されるテンプレートファイル。
- tag-{slug}.php - タグのスラッグが sometag ならば WordPress は tag-sometag.php を探す。
- tag-{id}.php - タグ ID が 6 ならば WordPress は tag-6.php を探す。
- tag.php
- archive.php
- index.php
カスタム分類表示
カスタム分類アーカイブインデックスページの表示に使用されるテンプレートファイル。
- taxonomy-{taxonomy}-{term}.php - 分類名が sometax、項目が someterm ならば WordPress は taxonomy-sometax-someterm.php を探す。投稿フォーマットの場合、分類名は 'post_format'、項目は 'post_format-{format}'、つまり taxonomy-post_format-post-format-link.php 。
- taxonomy-{taxonomy}.php - 分類名が sometax ならば WordPress は taxonomy-sometax.php を探す。
- taxonomy.php
- archive.php
- index.php
参照: カスタム分類
カスタム投稿タイプ表示
カスタム投稿タイプ アーカイブインデックスページの表示に使用されるテンプレートファイル。
- archive-{post_type}.php - 投稿タイプ が product ならば WordPress は archive-product.php を探す。
- archive.php
- index.php
(カスタム投稿タイプの個別ページを表示する場合は個別投稿表示を参照)
参照: カスタム投稿タイプ
作成者表示
作成者別アーカイブインデックスページの表示に使用されるテンプレートファイル。
- author-{nicename}.php - 作成者の nicename がramiならば WordPress は author-rami.php を探す。
- author-{id}.php - 作成者の作成者ID が 6 ならば WordPress は author-6.php を探す。
- author.php
- archive.php
- index.php
日付別表示
日付別アーカイブインデックスページの表示に使用されるテンプレートファイル。
- date.php
- archive.php
- index.php
検索結果表示
検索結果インデックスページの表示に使用されるテンプレートファイル。
- search.php
- index.php
参照: 検索テンプレート
404 (Not Found) 表示
サーバーエラー 404 ページの表示に使用されるテンプレートファイル。
- 404.php
- index.php
参照: 404 テンプレート
添付ファイル表示
個別添付ファイルページ (attachment 投稿タイプ) の表示に使用されるテンプレートファイル。
- {MIME_type}.php - 任意の MIME タイプ (image.php, video.php, application.php)。text/plainならば、以下の順番:
- text.php
- plain.php
- textplain.php
- attachment.php
- single-attachment.php
- single.php
- index.php
- {MIME_type}.php - 任意の MIME タイプ (image.php, video.php, application.php)。text/plainならば、以下の順番:
Embeds
embed テンプレートファイルは embed 機能で埋め込まれる投稿のレンダリングに使用されます。Version 4.5 から WordPress は次の順序を使用します。
- embed-{post-type}-{post_format}.php - まず WordPress は特定の投稿に関するテンプレートを探します。例えば 投稿タイプが「product」で、「音声(audio)」フォーマットを持つ場合 WordPress は「embed-product-audio.php」を探します。
- embed-{post-type}.php – 投稿タイプが「car」であれば WordPress は「embed-car.php」を探します。
- embed.php – そして WordPress は「embed.php」に落ちます。
- どのテンプレートファイルも見つからなければ最後に 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' );
変更履歴
- 4.3: singular.php を追加。
- 3.1: archive-{post_type}.php を追加。
- 3.0: single-{post_type}.php、author-{nicename}.php、author-{id}.php、taxonomy.php、taxonomy-{taxonomy}.php、taxonomy-{taxonomy}-{term}.php を追加。
- 2.9 : page-slug.php、page-id.php、category-slug.php、tag-id.php を追加。
- 2.3 : タグページを追加。
- 2.0 : 添付ファイルテンプレートを追加。
- 1.5 : テーマシステムの導入
ソースファイル
- テンプレート階層関数群は
wp-includes/theme.php
で定義されています。 - テンプレートロード階層は
wp-includes/template-loader.php
で定義されています。
プラグイン
関連
テンプレート階層: カテゴリーテンプレート, タグテンプレート, タクソノミーテンプレート, ページテンプレート, 投稿タイプテンプレート, 投稿者テンプレート, 日付テンプレート, 検索テンプレート, 404 テンプレート, 添付ファイルテンプレート, ループテンプレート /en