- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
「テンプレート階層」の版間の差分
(テンプレート階層に応じたスタイルシートを出力する方法) |
(メニュー名との一致) |
||
98行目: | 98行目: | ||
[[Pages|固定ページ]]: | [[Pages|固定ページ]]: | ||
− | # カスタムテンプレート: [[Pages Add New SubPanel|ページ作成画面]]の「[[Pages#Page_Templates| | + | # カスタムテンプレート: [[Pages Add New SubPanel|ページ作成画面]]の「[[Pages#Page_Templates|テンプレート]]」ドロップダウンメニューで選択したテンプレート名 |
# page-''slug''.php - 例えば固定ページのスラッグが "about" の場合は page-about.php | # page-''slug''.php - 例えば固定ページのスラッグが "about" の場合は page-about.php | ||
# page-''ID''.php - 例えば固定ページの ID が6の場合は page-6.php | # page-''ID''.php - 例えば固定ページの ID が6の場合は page-6.php | ||
107行目: | 107行目: | ||
<div id="Front_Page_display"> | <div id="Front_Page_display"> | ||
+ | |||
=== フロントページ表示 === | === フロントページ表示 === | ||
</div> | </div> |
2014年2月27日 (木) 19:05時点における版
目次
はじめに
WordPress テンプレートはパズルのピースのように組み合わせられ、サイト上で Web ページを表示します。一部のテンプレート(例: ヘッダー・フッターテンプレート)はすべての Web ページ内で使用される一方、他のテンプレートはある条件の下でのみ使用されます。
このドキュメンテーションの目的
このドキュメンテーションは、次の疑問に答えてくれるでしょう。
ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?
このドキュメンテーションの使い方
WordPress v1.5 で「テーマ」機能が導入されて以来、テンプレートはますまカスタマイズしやすくなりました。WordPress テーマを作成するには、WordPress がブログ上の各種ページを表示するためにどのようにテンプレートファイルを選択するのかを正しく理解する必要があります。すでにあるテーマをカスタマイズしたい場合にもどのテンプレートファイルを編集すればいいのかを知る手がかりになるでしょう。
条件分岐タグを使う WordPress では、テンプレートとクエリの種類を一致させるための方法が複数用意されています。WordPress テーマ制作者は条件分岐タグを使って、あるページを生成するにはどのテンプレートが使われるのかをコントロールすることができます。ここで紹介するすべてのテンプレートファイルを使っていないテーマもありますし、条件分岐タグを使って他のテンプレートファイルを読み込ませているテーマもあります。詳しくは条件分岐タグおよびテーマの作成ページの「クエリベースのテンプレート」セクションをご覧ください。 |
概観図
次の図は、WordPress テンプレート階層に基づいてウェブページを生成する際に呼ばれるテンプレートファイルを図解したものです。訪問者がアクセスする各種ページのクエリ文字列と、それに対応する条件分岐タグ、そして、WordPress が探すテンプレートファイル名の順序を示しています。
- WordPress テンプレート階層構造図 (画像は英語版Codex にあります)
- 英語版Codexオリジナル画像(PNG形式)
仕組み
訪問者が WordPress サイト上のページにアクセスしたとき、WordPress は次のように動きます。
- URI に含まれるクエリ文字列とクエリタイプを照合し、要求されているページの種類(メインページ、カテゴリーページなど)を判断。
- 該当するページ種類のテンプレート階層に基づき、現在のテーマディレクトリ内からテンプレートファイルを探す。
- 最初に見つかったテンプレートファイルを用いて、要求されたページを生成。
例えば、ブログが http://example.com/wp/
にあり、訪問者が http://example.com/wp/category/apple/
という「りんご」カテゴリーのアーカイブページにアクセスしたとしましょう。WordPress は、現在のテーマディレクトリの中から「りんご」カテゴリーに使えるテンプレートファイルを探します。
カテゴリーページのテンプレート階層は次のとおりです。WordPress はこのリストの上から順に、ファイルがないかどうか探していき、最初に見つけたファイルを使います。
- category-slug.php -- 特定のカテゴリー用テンプレート
- category-ID.php -- 特定のカテゴリー用テンプレート
- category.php -- カテゴリーの汎用テンプレート
- archive.php -- 汎用アーカイブテンプレート(タグ・日別アーカイブなどと共用)
- index.php
「りんご」カテゴリーのスラッグが 'apple'
だった場合、WordPress はまず category-apple.php
というテンプレートファイルを探します。テーマディレクトリ内にこのファイルがない場合、ID が4とすれば、category-4.php
を探します。これも見つからなければさらに category.php
、次に archive.php
を探します。それもなければ、あらゆるページに使える基本のテーマテンプレートファイル index.php
を使います。
index.php
はテーマに必須ですが、テーマの作成者は他のテンプレートファイルを含めるかどうかを選べます。WordPress は 一致する名前のテンプレートファイルが見つからなければそれをスキップして次の候補のファイル名を探してくれます。例えば、他のページと違った表示にしたいのがカテゴリーID 4 だけなら、テーマディレクトリ内に置くテンプレートファイルは category-4.php
と index.php
のみでいいのです。
条件分岐タグの利用
WordPress がページの種類(クエリタイプ)に合うテンプレートファイルを特定する方法は一つではありません。条件分岐タグは表示しようとしているページの種類を判定できるので、その判定結果によってテンプレートファイルを切り替えたり、複数のページ種類で共通のテンプレートファイルを使い、その中の一部分だけをページ種類に応じて切り替える、といった細かい制御もできます。具体的な活用例として、デフォルトテーマの sidebar.php
が参考になるでしょう。詳しくは条件分岐タグおよびテーマの作成 - クエリベースのテンプレートをご覧ください。
ページ種類別テンプレート階層
以下、表示するページの種類別に、WordPress に呼ばれるテンプレートファイルの順序を示します。各セクションの見出しが、冒頭の問い「ある種類のページを表示するとき、どのテンプレートファイルが使われるのか?」の、「ある種類のページ」に当てはまります。
ホームページ表示
訪問者がサイトのメインページ(ホームページ)にアクセスした場合、WordPress はまず最初に、静的フロントページかどうかを判断します。静的フロントページが設定されている場合、固定ページのテンプレート階層に従ってテンプレートを読み込みます。設定されていなければ、次の順にテンプレートファイル名を探し、最初に見つかったテンプレートを使ってページを生成します。
- home.php
- index.php
個別投稿表示
固定ページ表示
- カスタムテンプレート: ページ作成画面の「テンプレート」ドロップダウンメニューで選択したテンプレート名
- page-slug.php - 例えば固定ページのスラッグが "about" の場合は page-about.php
- page-ID.php - 例えば固定ページの ID が6の場合は page-6.php
- page.php
- index.php
注: これは「固定ページ」を指し、一般的なブログ投稿のページや Web ページのことではありません。
フロントページ表示
バージョン 3.0 以降。
- front-page.php - 管理 > 設定 > 表示設定 セクションで「フロントページの表示」が「最新の投稿」または「固定ページ」どちらになっている場合でも使われる。
- 固定ページ表示ルール - 管理 > 設定 > 表示設定 セクションの「フロントページの表示」で、「フロントページ」が設定されている場合
- ホームページ表示ルール - 管理 > 設定 > 表示設定 セクションの「フロントページの表示」で、「投稿ページ」が設定されている場合
カテゴリー表示
- category-slug.php - 例えばカテゴリーのスラッグが "news" の場合は category-news.php
- category-ID.php - 例えばカテゴリーID 6 用のテンプレートであれば category-6.php
- category.php
- archive.php
- index.php
タグ表示
- tag-slug.php
- tag-ID.php
- tag.php
- archive.php
- index.php
カスタム分類表示
カスタム分類テンプレート。
- taxonomy-{taxonomy}-{term}.php - 例えば分類名が "sometax"、スラッグが "someterm" の場合は taxonomy-sometax-someterm.php
- taxonomy-{taxonomy}.php - 例えば分類名が "sometax" の場合は taxonomy-sometax.php
- taxonomy.php
- archive.php
- index.php
カスタム投稿タイプ表示
カスタム投稿タイプテンプレート。
- archive-{post_type}.php - 例えば投稿タイプ名が "product" の場合は archive-product.php.
- archive.php
- index.php
(カスタム投稿タイプの個別ページを表示する場合は個別投稿表示を参照)
作成者表示
- author-{nicename}.php - 例えば作成者の nicename が "hanako" の場合は author-hanako.php (バージョン 3.0 以降)
- author-{id}.php - 例えば作成者の ID が "6" の場合は author-6.php (バージョン 3.0 以降)
- author.php
- archive.php
- index.php
日付別表示
日時ごとのアーカイブテンプレート。
- date.php
- archive.php
- index.php
検索結果表示
- search.php
- index.php
404 (Not Found) 表示
- 404.php
- index.php
添付ファイル表示
記事本文への画像添付/enで 'Linked to Page' を選んだ場合に、画像のリンク先として使われるページ
- MIME_TYPE.php - image.php, video.php, audio.php, application.php, その他 MIME type の最初の部分のファイル名
- attachment.php
- single.php
- index.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 : 添付ファイルテンプレートを追加。
ソースファイル
テンプレート階層関数群は wp-includes/theme.php
にあります。
外部資料