概要
訪問者が WordPress サイトの任意のページにアクセスすると、WordPress は クエリ文字列 を使用して、どのテンプレートを使用してページを表示するかを決定します。クエリ文字列には、この決定を助けるための URL からのデータが含まれています。
このデータが利用可能になると、WordPress はテンプレート階層を検索し、一致するテンプレートファイルを見つけるまで続けます。一般的に、WordPress が階層内でブロックテンプレートを探す可能性のある 3 つの領域があります(優先順位の順):
- データベース内の
wp_template
投稿タイプに保存されたユーザー作成のテンプレート。 - 子テーマがアクティブな場合、子テーマの
/templates
フォルダーにあるテンプレート。 - テーマの
/templates
フォルダー内のテンプレート。
テーマは、テーマデザインを達成するために必要な数のテンプレートをパッケージ化できます。ブロックテーマに必要な唯一のテンプレートファイルは index.html
テンプレートです。
視覚的概要
この図は、テンプレート階層に基づいて WordPress ページを生成するために呼び出されるテンプレートファイルを示しています:
クエリタイプによるテンプレート階層
WordPress には、技術的には単一のテンプレート階層は存在しません。クエリされるページのタイプによって階層を考えるのが最適です。たとえば、フロントページがクエリされている場合、フロントページテンプレート階層が使用されます。
以下に、各テンプレート階層をそのクエリタイプ(およびいくつかのサブタイプ)ごとに分解したものを示します。これにより、テーマに含めるべきテンプレートファイルを特定するのに役立ちます。
フロントページ階層
フロントページテンプレート階層は、テンプレートの中で独特であり、ユーザーが管理の 設定 > 読み込み の下で選択した フロントページの表示 設定に基づいて大きく変わる可能性があります。
最新の投稿 が フロントページの表示 設定に選択されている場合、階層は次のようになります:
front-page.html
- ホームテンプレート階層 にフォールバック
静的ページ が フロントページの表示 設定に選択されている場合、階層は次のようになります:
front-page.html
- ページテンプレート階層 にフォールバック
front-page.html
テンプレートは、フロントページの表示 設定に関係なく常に優先されることに注意してください。影響を受けるのは、階層内で下位のテンプレートのみです。
ホーム階層
その名前にもかかわらず、ホームテンプレートはサイトのホームページに常に使用されるわけではありません。技術的には、最新のブログ投稿が表示されるページ(すなわち、ブログ投稿インデックス)を指します。
フロントページテンプレート階層と同様に、ホームテンプレートも管理の 設定 > 読み込み の下での フロントページの表示 設定に依存します。
最新の投稿 が フロントページの表示 設定に選択されている場合、この階層がサイトのフロントページに適用されます:
front-page.html
home.html
index.html
静的ページ が フロントページの表示 設定に選択され、投稿ページ 設定にページが選択されている場合、ホームテンプレート階層は選択された投稿ページに適用されます(この場合、フロントページには適用されません)。このシナリオでの階層は次のようになります:
home.html
index.html
いくつかの歴史:「ホーム」という用語は、WordPress の初期の頃にさかのぼり、当時は単なるブログシステムであり、サイトのフロントページに表示される唯一のものはブログ投稿でした。WordPress はフロントページに何でも表示できるように進化しましたが、「ホーム」という用語はブログ投稿インデックスを指すために保持されました。そして「フロントページ」という用語は、サイトのフロントページを指すために使用されました。
シングラーハイアラーキー
訪問者が単一の投稿、ページ、添付ファイルページ、またはカスタム投稿タイプのエントリにアクセスすると、WordPress はそのビューのためにクエリされた投稿に基づいてテンプレートを見つけようとします。
すべてのシングルテンプレートはカスタムテンプレートを利用でき、以下のサブセクションで {custom_template}.html
としてリストされます。これらはほぼ常に階層の最上部に位置します。カスタムテンプレートの作成に関する詳細は、メインの テンプレート ドキュメントの「カスタムテンプレート」セクションを参照してください。
シングル階層
シングルテンプレート階層は、訪問者が単一の投稿またはカスタム投稿タイプの単一エントリにアクセスしたときに発動します。テンプレートを決定するために使用される階層は次のとおりです:
{custom-template}.html
single-{post_type}-{post_name}.html
single-{post_type}.html
single.html
singular.html
index.html
投稿名(すなわち、スラッグ)が blue-shirt
の product
のカスタム投稿タイプは、この階層を使用します:
{custom-template}.html
single-product-blue-shirt.html
single-product.html
single.html
singular.html
index.html
コア WordPress page
および attachment
投稿タイプは特別なケースであり、デフォルトのシングルテンプレート階層とは異なる方法で処理されます。詳細については、以下のページおよび添付ファイルのセクションを参照してください。
ページ階層
ページテンプレート階層は、誰かがあなたのウェブサイトの単一ページを訪れたときに発動します。この階層はテンプレートを決定するために使用されます:
{custom-template}.html
page-{post_name}.html
page-{post_id}.html
page.html
index.html
投稿名(すなわち、スラッグ)が about-me
で ID が 200
のページは、この階層を使用します:
{custom-template}.html
page-about-me.html
page-200.html
page.html
index.html
添付ファイル(メディア)階層
添付ファイル(メディアファイルページ)の単一ビューを訪れると、WordPress はデフォルトのシングルテンプレート階層にいくつかの追加テンプレートを前置きします。これが添付ファイルテンプレート階層です:
{mime_type}-{sub_type}.html
{sub_type}.html
{mime_type}.html
attachment.html
- デフォルトの シングルテンプレート階層 にフォールバック
image/jpeg
MIME タイプの添付ファイルがある場合、その image
部分は mime_type
と見なされ、jpeg
部分は sub_type
になります。
image/jpeg
タイプの添付ファイルがあり、投稿名(すなわち、スラッグ)が red-bird
の場合、完全な添付ファイルテンプレート階層は次のようになります:
image-jpeg.html
jpeg.html
image.html
attachment.html
{custom-template}.html
single-attachment-red-bird.html
single-attachment.html
single.html
singular.html
index.html
WordPress 6.4 以降、添付ファイルページは新しいインストールでは デフォルトで有効ではありません。ユーザーはプラグインを使用してそれらを有効にできますので、テーマをテストして、添付ファイルページを表示する際にコンテンツが適切に表示されることを確認することは依然として良いプラクティスです。
プライバシーポリシーページ階層
WordPress のプライバシーポリシーページは、他のページと比較して特別なケースです。WordPress は、通常のページテンプレート階層を見る前に privacy-policy.html
テンプレートを探します。プライバシーポリシーページのテンプレート階層は次のとおりです:
privacy-policy.html
- ページテンプレート階層 にフォールバック
アーカイブ階層
WordPress のアーカイブは、日付、著者、投稿タイプなどのメタデータのいずれかのタイプまたはタクソノミー用語(カテゴリ、タグ)によってグループ化された投稿を表示します。
タクソノミー用語階層
公開されるタクソノミーを扱う場合、タクソノミー内の各用語には独自のアーカイブページがあります。タクソノミー用語テンプレート階層は次のとおりです:
taxonomy-{taxonomy_slug}-{term_slug}.html
taxonomy-{taxonomy_slug}.html
taxonomy.html
archive.html
index.html
スラッグが location
のタクソノミーがあり、そのタクソノミー内の用語のスラッグが alabama
の場合、テンプレート階層は次のようになります:
taxonomy-location-alabama.html
taxonomy-location.html
taxonomy.html
archive.html
index.html
コア WordPress category
および post_tag
タクソノミーは、タクソノミー用語テンプレートを使用しません。詳細については、以下のカテゴリおよびタグのセクションを参照してください。
カテゴリ階層
訪問者がカテゴリリンクをクリックしてカテゴリアーカイブページを表示すると、次のテンプレート階層が使用されます:
category-{slug}.html
category-{id}.html
category.html
archive.html
index.html
カテゴリスラッグが news
でカテゴリ ID が 123
のカテゴリアーカイブを表示している場合、テンプレート階層は次のようになります:
category-news.html
category-123.html
category.html
archive.html
index.html
タグ階層
訪問者がタグリンクをクリックしてタグアーカイブページを表示すると、次のテンプレート階層が使用されます:
tag-{slug}.html
tag-{id}.html
tag.html
archive.html
index.html
タグスラッグが flowers
でタグ ID が 456
のタグアーカイブを表示している場合、テンプレート階層は次のようになります:
tag-flowers.html
tag-456.html
tag.html
archive.html
index.html
投稿タイプアーカイブ階層
カスタム投稿タイプには、公開されるアーカイブページがあり、これは本質的にその投稿タイプのインデックスページとして機能し、デフォルトでは最新の投稿をリストします(ただし、これはフィルタリングおよび変更可能です)。訪問者が投稿タイプアーカイブを表示すると、テンプレート階層は次のようになります:
archive-{post_type}.html
archive.html
index.html
スラッグが portfolio_project
の投稿タイプがある場合、その階層は次のようになります:
archive-portfolio_project.html
archive.html
index.html
コア WordPress post
投稿タイプは ホームテンプレート階層 を使用し、デフォルトの page
および attachment
投稿タイプにはアーカイブビューがありません。
著者階層
「著者」という用語が使用されているにもかかわらず、著者アーカイブはユーザープロフィールの一部と投稿著者アーカイブの一部です。すべてのユーザーに対してアーカイブ URL が生成され、投稿を公開しているかどうかに関係なく、WordPress サイト上のすべてのユーザーに対して生成されます。しかし、著者テンプレートの意図は一般的にユーザーに関するメタデータを表示し、その投稿をリストすることです。
サイトのフロントエンドで著者アーカイブページを訪れると、次のテンプレート階層になります:
author-{user_nicename}.html
author-{user_id}.html
author.html
archive.html
index.html
ニックネームが matt
で ID が 333
のユーザーの著者アーカイブページを訪れると、著者アーカイブテンプレート階層は次のようになります:
author-matt.html
author-333.html
author.html
archive.html
index.html
日付階層
日付または日時ベースのアーカイブページ(例:年次、月次、週次アーカイブ)を表示する場合、テンプレート階層は次のようになります:
検索階層
検索テンプレート階層は、ウェブサイトで検索結果を表示する際に使用されます。これはアーカイブに似ており、複数の投稿をリストしますが、技術的にはアーカイブページではありません。検索結果のテンプレート階層は次のようになります:
404(見つかりません)階層
存在しないウェブサイトの URL にアクセスすると、WordPress は 404 テンプレートを探します。これは、ページが存在しないことに関する有用な情報を提供することを目的としています。404 ページのテンプレート階層は次のようになります:
埋め込み階層
埋め込みテンプレートは、他のサイトがあなたの WordPress サイトから投稿を埋め込むときに使用されます。WordPress は出力を <iframe>
でラップし、テンプレートに従って埋め込まれたコンテンツを表示します。
埋め込みテンプレートはブロックテンプレートシステムではサポートされていません。カスタム埋め込みテンプレートを作成して使用するには、それらはテーマのルートフォルダーに配置され、PHP ファイル拡張子を使用する必要があります。
埋め込まれたコンテンツのテンプレート階層は次のようになります:
embed-{post_type}-{post_format}.php
embed-{post_type}.php
embed.php
テーマにカスタム埋め込みテンプレートが含まれていない場合、WordPress はコアにバンドルされた /wp-includes/theme-compat/embed.php
テンプレートを使用します。他のテンプレートタイプのようにインデックステンプレートにフォールバックすることはありません。
投稿タイプが post
で投稿フォーマットが image
の投稿を埋め込む場合、階層は次のようになります:
embed-post-image.php
embed-post.php
embed.php