概要

訪問者が WordPress サイトの任意のページにアクセスすると、WordPress は クエリ文字列 を使用して、どのテンプレートを使用してページを表示するかを決定します。クエリ文字列には、この決定を助けるための URL からのデータが含まれています。

このデータが利用可能になると、WordPress はテンプレート階層を検索し、一致するテンプレートファイルを見つけるまで続けます。一般的に、WordPress が階層内でブロックテンプレートを探す可能性のある 3 つの領域があります(優先順位の順):

  • データベース内の wp_template 投稿タイプに保存されたユーザー作成のテンプレート。
  • 子テーマがアクティブな場合、子テーマの /templates フォルダーにあるテンプレート。
  • テーマの /templates フォルダー内のテンプレート。

テーマは、テーマデザインを達成するために必要な数のテンプレートをパッケージ化できます。ブロックテーマに必要な唯一のテンプレートファイルは index.html テンプレートです。

視覚的概要

この図は、テンプレート階層に基づいて WordPress ページを生成するために呼び出されるテンプレートファイルを示しています:

WordPress テンプレート階層の視覚的図

クエリタイプによるテンプレート階層

WordPress には、技術的には単一のテンプレート階層は存在しません。クエリされるページのタイプによって階層を考えるのが最適です。たとえば、フロントページがクエリされている場合、フロントページテンプレート階層が使用されます。

以下に、各テンプレート階層をそのクエリタイプ(およびいくつかのサブタイプ)ごとに分解したものを示します。これにより、テーマに含めるべきテンプレートファイルを特定するのに役立ちます。

フロントページ階層

フロントページテンプレート階層は、テンプレートの中で独特であり、ユーザーが管理の 設定 > 読み込み の下で選択した フロントページの表示 設定に基づいて大きく変わる可能性があります。

最新の投稿フロントページの表示 設定に選択されている場合、階層は次のようになります:

静的ページフロントページの表示 設定に選択されている場合、階層は次のようになります:

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-shirtproduct のカスタム投稿タイプは、この階層を使用します:

  • {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 はデフォルトのシングルテンプレート階層にいくつかの追加テンプレートを前置きします。これが添付ファイルテンプレート階層です:

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 テンプレートを探します。プライバシーポリシーページのテンプレート階層は次のとおりです:

アーカイブ階層

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

日付階層

日付または日時ベースのアーカイブページ(例:年次、月次、週次アーカイブ)を表示する場合、テンプレート階層は次のようになります:

  • date.html
  • archive.html
  • index.html

検索階層

検索テンプレート階層は、ウェブサイトで検索結果を表示する際に使用されます。これはアーカイブに似ており、複数の投稿をリストしますが、技術的にはアーカイブページではありません。検索結果のテンプレート階層は次のようになります:

  • search.html
  • index.html

404(見つかりません)階層

存在しないウェブサイトの URL にアクセスすると、WordPress は 404 テンプレートを探します。これは、ページが存在しないことに関する有用な情報を提供することを目的としています。404 ページのテンプレート階層は次のようになります:

  • 404.html
  • index.html

埋め込み階層

埋め込みテンプレートは、他のサイトがあなたの 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