WordPressのテンプレート階層の仕組み ~テンプレート階層と表示の優先順位を解説~
- 1. WordPressのテンプレートの仕組み
- 2. WordPressのテンプレートの優先順位
- 3. WordPressのテンプレート階層一覧
- 3.1. ホームページ(トップページ)
- 3.2. 投稿ページ
- 3.3. 固定ページ
- 3.4. カテゴリーページ
- 3.5. タグページ
- 3.6. 日付ページ
- 3.7. 作成者ページ
- 3.8. 検索結果ページ
- 3.9. カスタム分類ページ
- 3.10. カスタム投稿ページ
- 3.11. 404ページ
- 4. WordPressのテーマ開発はテンプレートの役割の整理から始めよう
WordPressのテンプレートの仕組み
WordPressはWebサイトにテーマを適用させることで、Webサイトの見た目をカスタマイズできるようになっています。テーマは複数のPHPファイルやCSSファイル、JavaScriptファイルから構成されており、アクセスされたWebページのURLに応じて、使用されるテーマのファイルが自動的に選択されます。
テーマを構成しているそれぞれのPHPファイルのことをWordPressではテンプレートと言います。
テンプレートは階層構造をなしており、Webページにアクセスされた時に使用されるテンプレートファイルには自動的に優先度が設定されています。
このテンプレート階層の仕組みを理解することは、WordPressのテーマ開発では非常に重要なことです。
WordPressのテンプレートの優先順位
ベースとなるindex.phpとstyle.css
WordPressのテーマを構成しているファイルは、テーマによって異なりますが、すべてのテーマに共通している点は、「index.php」と「style.css」が必ず含まれていることです。
言い換えるとテーマフォルダの中に「index.php」と「style.css」の2つさえあれば、とりあえずWordPressのシステムはそのテーマフォルダを1つのテーマと認識してくれるのです。
この2つのファイルだけからなるテーマでは、トップページも投稿ページも固定ページもカテゴリーアーカイブページなどもすべて「index.php」のテンプレートを使って表示されます。なぜなら「index.php」以外のテンプレートファイルが存在していないからです。
固定ページに使うpage.php
ここで、このテーマファイルの中に「page.php」というテンプレートファイルを追加したとします。
この状況である固定ページにブラウザでアクセスした時、今度は「index.php」ではなく「page.php」のテンプレートファイルが使われて固定ページが表示されるようになります。
つまり、「index.php」と「page.php」の両方が含まれたテーマが有効化されている時、固定ページの表示では「page.php」のテンプレートが優先されるということです。
この優先順位のことを、WordPressでは「テンプレート階層」といいます。
WordPressのテンプレート階層一覧
WordPressでは多種多様のWebページを作成できますが、Webページの種類を整理すると次のようになります。
- ホームページ(トップページ)
- 投稿ページ
- 固定ページ
- カテゴリーページ
- タグページ
- 日付ページ
- 作成者ページ
- 検索結果ページ
- カスタム分類ページ
- カスタム投稿ページ
- 404ページ
ざっと挙げるとこのようになります。WordPressでは訪問者がアクセスしたWebページのURLに応じて、適切なテンプレートファイルを選択してそれにふさわしいWebページを動的に構築して表示させます。
以下、それぞれの種類におけるテンプレート階層と表示の優先順位を記載します。
ホームページ(トップページ)
- home.php
- index.php
投稿ページ
- single-{post_type}.php
- single.php
- singular.php
- index.php
※{post_type}の部分にはカスタム投稿タイプ名が入る
固定ページ
- カスタムテンプレートファイル
- page-{slug}.php
- page-{id}.php
- page.php
- singular.php
- index.php
※{slug}には固定ページのスラッグが入り、{id}には固定ページのidが入る
カテゴリーページ
- category-{slug}.php
- category-{id}.php
- category.php
- archive.php
- index.php
※{slug}にはカテゴリーページのスラッグが入り、{id}にはカテゴリーページのidが入る
タグページ
- tag-{slug}.php
- tag-{id}.php
- tag.php
- archive.php
- index.php
※{slug}にはタグページのスラッグが入り、{id}にはタグページのidが入る
日付ページ
- date.php
- archive.php
- index.php
作成者ページ
- author-{nicename}.php
- author-{id}.php
- author.php
- archive.php
- index.php
※{nicename}には作成者のnicenameが入り、{id}には作成者のidが入る
検索結果ページ
- search.php
- index.php
カスタム分類ページ
- taxonomy-{taxonomy}-{term}.php
- taxonomy-{taxonomy}.php
- taxonomy.php
- archive.php
- index.php
※{taxonomy}に分類名が入り、{term}にはその分類の項目が入る
カスタム投稿ページ
- archive-{post_type}.php
- archive.php
- index.php
※{post_type}にはカスタム投稿タイプ名が入る
404ページ
- 404.php
- index.php
WordPressのテーマ開発はテンプレートの役割の整理から始めよう
テンプレートの役割を整理することで、効率的にテーマの開発ができるようになります。
たとえば、投稿ページと固定ページで全く同じテンプレートを使いたい場合、それぞれのテンプレート階層の上位にある「single.php」や「page.php」などのファイルを無くして、「singular.php」だけ含めるようにすれば、投稿ページと固定ページの双方で「singular.php」という1つのテンプレートでWebページが表示されます。
つまりこのケースでは、全く同じ内容の「single.php」や「page.php」を作る必要はありません。
同様に、カテゴリーアーカイブと月別アーカイブで同じデザインにしたい場合は、上位にある「category.php」や「date.php」を含めないで、「archive.php」だけ存在していれば良いということになります。
また、テーマ開発の現場では、上位階層のテンプレートファイルが存在しているのに、下位階層のテンプレートファイルばかり編集していて、Webページのデザインが変わらなくておかしい、といったこともよくあります。
開発中のテーマに存在しているテーマファイルの把握も非常に大切です。
テンプレートの役割を整理すれば、無駄なテンプレートファイルを作成することなく効率的にテーマ開発が進みます。オリジナルテーマを開発する時は、常にテンプレート階層を意識するようにしましょう。