WordPressはアクセスされたURLに応じて表示するテンプレートを決定し出力しています。その出力するテンプレートの選択方法には、決まりと優先順位があります。
このページでは、各種ページごとにどのテンプレートを出力するのか、その種類と優先順位を紹介します。
WordPress開発する上での一つの壁である階層・優先順位について理解を深めましょう。
目次
投稿ページ(カスタム投稿ページ)の優先順位
- single-{投稿タイプ名}-{スラッグ}.php
- single-{投稿タイプ名}.php
- single.php
- singular.php
- index.php
たとえば、投稿タイプがbook
・slugがabc
のページがリクエストされた場合、
single-book-abc.php → single-book.php → single.php → singular.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
固定ページの優先順位
- カスタムテンプレートファイル
- page-{スラッグ}.php
- page-{投稿ID}.php
- page.php
- singular.php
- index.php
たとえば、固定ページのスラッグがabout
のページ(投稿IDが10
)がリクエストされた場合、
カスタムテンプレートファイル → page-about.php → page-10.php → page.php → singular.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
ちなみに、投稿IDを用いた「page-{投稿ID}.php」を使用するのはおすすめしません。
- テンプレート名からファイルの内容が判断できない
- 他の環境のWordPress上で扱った場合、投稿IDが変わる可能性がある
という理由が挙げられます。
※カスタムテンプレートファイルとは
固定ページでは、ページごとに読み込むテンプレートを選択することができます。そのテンプレートのことを「カスタムテンプレートファイル」といいます。
固定ページでテンプレートが選択されていた場合、最優先でそのテンプレートが読み込まれます。
フロントページ(トップページ)の優先順位
- front-page.php
- home.php
- page.php
- index.php
サイトのトップページがリクエストされた場合、
front-page.php → home.php → page.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
カテゴリーページの優先順位
- category-{スラッグ}.php
- category-{カテゴリーID}.php
- category.php
- archive.php
- index.php
たとえば、カテゴリーのスラッグがnews
のページ(カテゴリーIDが5
)がリクエストされた場合、
category-news.php → category-5.php → category.php → archive.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
ちなみに、固定ページの場合と同様に、カテゴリーIDを用いた「category-{カテゴリーID}.php」を使用するのはおすすめしません。
タグページの優先順位
- tag-{スラッグ}.php
- tag-{タグID}.php
- tag.php
- archive.php
- index.php
たとえば、タグのスラッグがnews
のページ(タグIDが5
)がリクエストされた場合、
tag-news.php → tag-5.php → tag.php → archive.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
ちなみに、固定ページの場合と同様に、カテゴリーIDを用いた「tag-{タグID}.php」を使用するのはおすすめしません。
カスタムタクソノミーページの優先順位
- taxonomy-{タクソノミー名}-{ターム名}.php
- taxonomy-{タクソノミー名}.php
- taxonomy.php
- archive.php
- index.php
たとえば、タクソノミーのスラッグがnews
のページで、タームのスラッグがabc
のページがリクエストされた場合、
taxonomy-news-abc.php → taxonomy-news.php → taxonomy.php → archive.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
カスタム投稿タイプのアーカイブページの優先順位
- archive-{投稿タイプ名}.php
- archive.php
- index.php
たとえば、投稿タイプがbook
のアーカイブページがリクエストされた場合、
archive-book.php → archive.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
投稿者ページの優先順位
- author-{名前}.php
- author-{投稿者ID}.php
- author.php
- archive.php
- index.php
たとえば、投稿者のニックネームがtaro
のページ(投稿者IDが2
)がリクエストされた場合、
author-taro.php → author-2.php → author.php → archive.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
日付別アーカイブページの優先順位
- date.php
- archive.php
- index.php
date.php → archive.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
検索結果ページの優先順位
- search.php
- index.php
search.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
404ページの優先順位
- 404.php
- index.php
404.php → index.php
の順番でテンプレートを探し、最初に見つかったテンプレートを表示します。
WordPressのテンプレート階層・表示の優先順位とは
WordPressでは、アクセスがあったページのURLから自動的に各種テンプレートを出力します。
そのときに複数のテンプレートからどのテンプレートを表示するか、優先順位の高いものを選んで出力する仕組みが「テンプレート階層」です。具体的な表示の順番は前半で説明した通りです。
また、全てのページの優先順位をご覧になって気づいた方もいるかもしれませんが、全てのアクセスに対して優先順位が高いファイルが存在しない場合、index.phpを読み込むようになっています。
index.phpはWordPressテーマの根幹をなすファイルであり、逆に言えばindex.phpさえあればテーマとして機能するのです。
下の図は、ここまでご説明した表示の優先順位の外観図です。左から順に優先順位が高く、最も右側にindex.phpが存在しています。
引用:WordPress.org Japanese Team テンプレート階層
日本語のWordPress公式ページ:https://ja.wordpress.org/team/handbook/theme-development/basics/template-hierarchy/