【WordPress】よく使用するテンプレートファイルとテンプレート階層

WordPress

1.テンプレート階層一覧

テンプレート階層一覧は公式のドキュメントとして下記があります。

それぞれのテンプレート階層を理解しておけば、こちらを参考にしながらどれが必要でどれが不要なのか理解することができます。

引用 : https://ja.wordpress.org/

上記の画像のテンプレート階層は表示されたページ(URL)に対して左から順に優先的に表示されます。
例として「front-page.php」が用意されておらず「home.php」が用意されている場合のサイトトップページでは「home.php」が表示されます。また、「home.php」も用意されていない場合は「index.php」が表示されます。

2.よく使用するテンプレートファイルの説明

以降ではWordPressテーマ作成時によく使用するテンプレート階層の説明を行っていきます。

2-1.index.php

テーマとして機能するために必須のテンプレートファイルです。

各ページに対してテンプレートファイルが用意されていないときに表示されるテンプレートファイルとなっているため、用途は様々となり、テーマの設計に応じて役割を与えてあげる必要があります。

最新記事一覧を表示するようなコードをindex.phpに記述しておけば、最新記事一覧を表示する「トップページ」、「各アーカイブページ」、「検索結果ページ」としての役割を与えることができます。

2-2.front-page.php

サイトのフロントページを表示した際のテンプレートファイルです。

サイトのフロントページをおしゃれにしたい、他のページと違う構成にしたい場合に使用します。
下記画像のように『設定』>『表示設定』>『ホームページの表示』を〈固定ページ〉→〈投稿ページ〉と設定した場合のみ「front-page.php」は表示されず、優先度「home.php」>「index.php」の順で表示されます。

2-3.page-$slug.php

固定ページのうち特定のスラッグの投稿を表示した際に使用されるテンプレートファイルです。

お問い合わせページやプロフィールページなどに個別のレイアウトを施したい場合に使用します。
$slugは下記画像の通り『固定ページ』>『固定ページ一覧』>『クイック編集』>『スラッグ』から編集することができます。テンプレートファイル名の「$slug」にはここで指定したスラッグを使用します。

2-4.page.php

固定ページのテンプレート上記「page-$slug.php」でスラッグを指定していない固定ページを表示した際に使用されるテンプレートファイルです。

page.phpを用意しておくとふと固定ページを追加したくなったときに便利です。また、用意していないと固定ページを作成した際にindex.phpが表示されてしまうので、page.phpを用意するかindex.phpでハンドリングすることをおすすめします。
固定ページのテンプレートファイル表示順は厳密には『page-$slug.php』>『page-$id.php』>『page.php』>『singular.php』>『index.php』となっています。「page-$id.php」の$idは記事IDを指します。個人的にはファイル名でどの固定ページで使用しているのか分かりづらくなってしまうので、推奨しません。

2-5.single-post.php

個別投稿で投稿した記事を表示した際に使用されるテンプレートファイルです。

カスタム投稿やAttachmentで使用されるテンプレートと区別したい場合に用意しておく必要があります。区別しなくても問題ない場合は後述の「single.php」を用意しておくだけで問題ありません。

2-6.single.php

個別投稿・カスタム投稿・Attachmentを表示した際に使用されるテンプレートファイルです。

個別投稿・カスタム投稿・Attachmentを区別しないで表示する際に用意します。本記事では詳細に記載はしませんが、カスタム投稿を区別したい場合は「single-$posttype.php($posttype : カスタム投稿タイプ名)」を用意します。Attachmentを区別したい場合は「attachment.php」を用意するかMIMEType毎にテンプレートファイルを用意することができます。

2-7.singular.php

個別投稿・カスタム投稿・Attachment・固定ページを表示した際に使用されるテンプレートファイルです。優先度としては前述の「page-$slug.php」や「single.php」よりは低くなっています。

個別投稿・カスタム投稿・Attachment・固定ページを同じレイアウトで表示したいときに用意します。また、「single.php」「page.php」のどちらかを用意していない場合は意図せず「index.php」が表示されてしまうことがあるので、用意していおくことをオススメします。
補足
Attachment投稿とはメディアに画像や音声ファイルなどをアップロードする際の投稿形式です。画像ファイルなども投稿形式が異なるだけで個別投稿などの投稿と同じような投稿が行われていると認識すると良いかもしれません。
画像ファイルなどのメディアファイルにはMIMEタイプというどういった種類のファイルなのかと識別するための情報があります。テンプレートファイルではこのMIMEタイプ毎のテンプレートを用意したり、Attachment投稿に対してのテンプレートを用意することもできます。

2-8.author.php

投稿者アーカイブページを表示した際に使用されるテンプレートファイルです。

投稿者の情報を表示したい際に表示されます。have_posts()で取得される記事は表示している投稿者が書いた記事が取得されます。あまり使用する場面を見かけませんが、一応記載しました。

2-9.category.php

カテゴリーのアーカイブページを表示した際に使用されます。have_posts()は現在表示しているカテゴリーの記事を全て取得してきます。

各カテゴリー毎の記事一覧ページを作成する際に用意します。1ページ当たりの表示記事数を管理画面またはcategory.php内で指定し、WordPressのページネーションに関する関数を使用することで簡単にページネーションを作成することができます。

2-10.tag.php

タグのアーカイブページを表示した際に使用されます。have_posts()は現在表示しているタグの記事を全て取得してきます。

上記の「category.php」のタグ版です。各タグ毎の記事一覧ページを作成する際に用意します。

2-11.date.php

年月日に紐づくアーカイブページを表示した際に使用されます。2023年を指定して表示された際には2023年に投稿した記事全てがhave_posts()によって取得され2023年1月を指定して表示された際には2023年1月に投稿した記事がhave_posts()によって取得されます。
投稿年や投稿年月毎の記事一覧ページを作成する場合に用意します。「https://XXXXX.com/2023/」でアクセスされると2023年全ての記事を「https://XXXXX.com/2023/1/」でアクセスされると2023年1月の全ての記事を取得してきます。

2-11.taxonomy.php

タクソノミーのアーカイブページを表示した際に使用されます。

カスタム投稿タイプを使用する際にカスタムタクソノミーを作成した際などにカスタムタクソノミーの一覧ページを作成したいといった場面で必要になります。通常カスタムタクソノミーを作成しない場合は使用しない為、出現頻度は低いかもしれません。
タクソノミーのアーカイブページには「https://XXXXX.com/タクソノミー名※1/ターム名※2」
※1 : function.phpでregister_taxonomy_for_object_typeの第一引数で指定した値
※2 : 管理画面から登録する値

2-12.archive.php

上記までに記載した「author.php」「category.php」「tag.php」「date.php」「taxonomy.php」が用意されていない際に当該のページへのアクセスがあった際に使用されるテンプレートファイルです。

一覧ページが全て同じレイアウトでよい場合や、多少の分岐で済む場合は「archive.php」に一括して記載することができます。また、カテゴリーアーカイブページだけレイアウトを変えたい場合は「archive.php」で共通のレイアウトを作成した後、「category.php」を用意することで対応することができます。

さいごに

今回特筆して紹介したテンプレートファイルをしっかり理解することができれば基本的なテーマを作成する際のテンプレートファイルの作成には困らないと思います。

一部あまり出現しないテンプレートファイルに関しても簡単ではありますが紹介しました。こちらに関しては頭の片隅に置いておくだけで今後役に立つかもしれません。

皆さんの自作テーマ作成のお役に立てれば幸いです。

コメント

タイトルとURLをコピーしました