WordPressのテンプレートファイルの種類とテンプレート階層

WordPressを使い始めたばかりのとき、よくわからなくて困ったのがWordPressで使用するテンプレートファイル。
こっちの本では○○.phpを使ってるけど、あっちの本では××.phpを使ってる!
かと思ったらindex.phpにif文で分岐させて表示してるのもある!!
本のとおりに作るだけなら問題ないけど、オリジナルのテーマを作るときに、どのテンプレートファイルを使えばいいのか自分なりにまとめてみました。
Contents
テンプレートファイルとは
WordPressのテーマを構成しているindex.phpやsingle.php、page.phpなどのファイルのことをテンプレートファイルと言います。
テンプレートファイルにはheader.phpやfooter.phpのように、すべてのページ内で使用できるファイル(パーツテンプレート)と、single.phpやarchive.phpのように、ある条件の下でのみ使用されるファイルがあります。
テンプレートファイルの種類
基本のテンプレートファイル
- index.php
- テーマに必要なメインテンプレート。
該当するテンプレートファイルがないときはすべてindex.phpが表示される。
おもなパーツテンプレート
- header.php
- ヘッダ出力用のテンプレート。
<?php get_header(); ?>
でheader.phpを読み込む。 - footer.php
- フッター出力用のテンプレート。
<?php get_footer(); ?>
でfooter.phpを読み込む。 - sidebar.php
- サイドバー出力用のテンプレート。
<?php get_sidebar(); ?>
でsidebar.phpを読み込む。 - searchform.php
- 検索フォーム出力用のテンプレート。
<?php get_search_form(); ?>
でsearchform.phpを読み込む。 - comments.php
- コメント出力用のテンプレート。
<?php comments_template(); ?>
でcomments.phpを読み込む。
その他のおもなテンプレートファイル
- front-page.php
- サイトのホーム(トップ)ページのテンプレート。
管理画面の表示設定の「フロントページの表示」が設定してあるときに表示される。 - home.php
- サイトのホーム(トップ)ページのテンプレート。
管理画面の表示設定の「フロントページの表示」が設定してあるときはその設定が優先される。 - single.php
- 個別投稿ページのテンプレート。
- page.php
- 固定ページのテンプレート。
- category.php
- カテゴリーページのテンプレート。
- search.php
- 検索結果ページのテンプレート。
- archive.php
- 記事一覧のテンプレート。
- 404.php
- 404エラーページのテンプレート。
テンプレート階層とは
テンプレート階層とは、WordPressでページを表示するときに「○○ページの出力には○○.phpを読み込む」といった、読み込むテンプレートファイルの優先順位の事です。
WordPressはテンプレート階層の優先順位の高い順番にファイルを探して、最初に見つかったテンプレートファイルを使ってページを表示します。
テンプレート階層 | WordPress Codex 日本語版
テンプレート階層によるテンプレートの優先度
ページの種類 | 高←テンプレート階層優先度→低 | ||||
---|---|---|---|---|---|
404エラーページ | 404.php | index.php | |||
検索結果ページ | search.php | index.php | |||
カスタム分類アーカイブ | taxonomy- |
taxonomy- |
taxonomy.php | archive.php | index.php |
カテゴリーアーカイブ | category- |
category- |
category.php | archive.php | index.php |
タグアーカイブ | tag- |
tag- |
tag.php | archive.php | index.php |
作成者アーカイブ | author- |
author- |
author.php | archive.php | index.php |
日付別アーカイブ | date.php | archive.php | index.php | ||
カスタム投稿タイプアーカイブ | archive- |
archive.php | index.php | ||
カスタム投稿ページ | single- |
single.php | index.php | ||
個別投稿ページ | single-post.php | single.php | index.php | ||
固定ページ | ページテンプレート | page- |
page- |
page.php | index.php |
フロントページ | front-page.php | index.php | |||
ホーム(トップ)ページ | home.php | index.php |
{ } には使用するテンプレートのスラッグやIDが入ります。
例えばカテゴリーのスラッグが"news"
の場合はcategory-news.php、カテゴリーのIDが6の場合はcategory-6.phpになります。
カスタムテンプレートとは
WordPressで決められたテンプレートファイルとは別に、自分で自由にファイル名を付けて作ったテンプレートを「カスタムテンプレート」といいます。
固定ページでページによってテンプレートを変えたいときに、カスタムテンプレートを作成すれば、固定ページの編集画面で使用するテンプレートでカスタムテンプレートを選択できるようになります。
カスタムテンプレートの作り方
① ファイルの先頭に以下のように記述して、mypage.php(任意のファイル名)という名前で保存して、テーマのディレクトリ内に置きます。
<?php /* Template Name: マイページ(管理画面で表示されるテンプレート名) */ ?>
② ページの編集画面で、適用するテンプレートを選択します。
通常は「デフォルトテンプレート」が選択されているので、選択リストから使用したいカスタムテンプレートを選んでページを保存します。
条件分岐で表示を変える方法
特定のカテゴリーだけ表示を変えたいとか、他は同じだけど一部分だけ表示を変えたい、というときはPHPの条件分岐を使って表示を変えることができます。
個別投稿ページでカテゴリーがwordpressの時とcolumnの時とその他の時で表示内容を変える場合
表示内容を変える
single.php
<?php if ( in_category( 'wordpress' ) ) { echo 'wordpressカテゴリーで表示させたい内容を記述'; } elseif ( in_category( 'column' ) ) { echo 'columnカテゴリーで表示させたい内容を記述'; } else { echo 'その他のカテゴリーで表示させたい内容を記述'; } ?>
他のテンプレートファイルを読み込む
single-post.php
<?php if ( in_category( 'wordpress' ) ) { //wordpressカテゴリーはsingle-wordpress.phpを読み込む get_template_part( 'single-wordpress' ); } elseif ( in_category( 'column' ) ) { //columnカテゴリーはsingle-column.phpを読み込む get_template_part( 'single-column' ); } else { //その他のカテゴリーはsingle.phpを読み込む get_template_part( 'single' ); } ?>
個別投稿ページに複数のカテゴリーが設定してあるときは、条件分岐の上から条件に当てはまったカテゴリーの内容が表示されます。
テーマの作成 クエリベースのテンプレート | WordPress Codex 日本語版
最後に
WordPressで使うテンプレートファイルはちょっとややこしいけど、ルールがわかるとテーマをカスタマイズするときも「どれを使うんだっけ?」と迷う事がなくなるし、デザインの自由度もあがるのですごく便利だなーと思います。
テンプレート階層の詳細図はWordPress テンプレート階層 概観図でご覧頂けます。