WrodPressテーマに必要最低限のファイルは、index.php
またはindex.html
(ブロック テーマ)およびstyle.css
ですが、テーマを適切にデザインし機能させるためにはより多くのファイルが必要になります。
その中の一つにサイトの表示方法を決めるテンプレートファイルがあります。
本ページは、特に記載のない場合はクラシック テーマを中心に記載しています。
テーマファイルがブロック テーマの場合は、(ブロック テーマ) の注釈を記載しています。
【参考】Codexマニュアルでの、テンプレートファイル説明ページを参考にしてください。。
テンプレート階層
WordPress では、このテンプレートファイルを使用する際の優先順位が決められておりテンプレート階層であらわされています。
テンプレート階層に表示されるファイルが同時に存在する場合、左側の優先順位が高いため優先して使用されます。
最も優先順位が低く右端にあるのがindex.phpであり、テーマに必須なファイルになります。
テンプレートファイルを決定するWordPress の動き
- すべてのクエリ文字列をクエリ タイプと照合して、要求されているページ (検索ページ、カテゴリ ページなど) を決定します。
- テンプレート階層によって決定された順序でテンプレートを選択します。
- 現在のテーマのディレクトリで特定の名前のテンプレート ファイルを探し、階層で指定された最初に一致したテンプレート ファイルを使用します。
- 一致する名前のテンプレート ファイルが見つからない場合、階層内の次のファイルにスキップしまし一致するテンプレート ファイルを見つけられない場合、テーマの
index.php
ファイルが使用されます。
カテゴリー表示の場合
管理画面の設定→パーマリンク オプション内のカテゴリーベースに.が設定してある場合は、category.phpは呼ばれず404.phpが使われる。
空白もしくは文字が設定されている場合は、category.phpが呼ばれる。
その場合、カテゴリーのリンク形式は以下のようになります。
https://ドメイン名/categoryもしくは設定した文字列/カテゴリ作成時に設定したslug/
子テーマを使用している場合
親テーマの同じファイルが上書きされます。両方のテーマに同じテンプレートが含まれている場合子テーマのテンプレートが使用されます。
テンプレート パーツ
テンプレート パーツは、サイト ヘッダーなど別のテンプレートの一部として含まれるテンプレートです。
テンプレート パーツは複数のテンプレートファイルに埋め込むことができます。
出典 テンプレートのパーシャル
テンプレート パーツ例
部品化されたテンプレートパーツは、各テンプレートファイルに含まれてヘッダーやフッター、サイドバーを生成します。
header.php
はヘッダーを生成。footer.php
は、フッターを生成。sidebar.php
はサイドバーを生成。
ブロック テーマでは、テンプレート パーツはパーツと呼ばれるフォルダー内に配置する必要があります。
よく使われるテンプレートパーツ
front-page.php
front-page.php テンプレートパーツが存在する場合、表示設定にかかわりなくトップページ表示用のテンプレートパーツとして一番の優先高い順位でWordPressから呼び出されます。
front-page.php テンプレートパーツがない場合は、管理画面>表示設定 > フロントページの表示の設定により使用されるテンプレートパーツが異なります。
- 最新の投稿:
ホームページには、テンプレート階層によりhome.phpまたは index.phpが使われます。 - 固定ページ:
ホームページに指定した固定ページには、テンプレート階層により
page-{slug}.php, page-{id}.php, page.php, singular.php, index.phpがホームページとして使われます。
投稿ページに指定した固定ページには、home.phpが使われます。
home.php
ホームページの表示を最新の投稿に設定している場合、index.phpより優先してホームページを表示するために使用されるテンプレートファイル。
singular.php
投稿ページ(single.php)と固定ページ(page.php)を同一ファイルで出力するために使用されるテンプレートファイル。
このファイルを使用すると投稿と固定ページを同じ形式で出力できます。
singel.phpまたはpage.phpが存在しない場合に使用されます。
single.php
個別記事の投稿用テンプレートファイル。
カスタム投稿関連テンプレート
single-{post-type}.php
カスタム投稿用のテンプレートファイル。
{post-type}は、カスタム投稿作成時に指定した投稿タイプスラッグ が入る。
archive-{post-type}.php
アーカイブ投稿タイプ 用テンプレートファイル。
{post-type}は、カスタム投稿作成時に指定した投稿タイプスラッグ が入る。
page.php
固定ページ用のテンプレートファイル。
page-{slug}.php
スラッグを指定して作成された固定ページ用テンプレートファイル。
指定したslug対応に固有のテーマファイルを使用することができる。
category.php
カテゴリー別一覧ページ用テンプレートファイル。
tag.php
指定したタグ別一覧ページ用テンプレートファイル。
author.php
/author/[ユーザー名]で表示されるユーザー情報表示用テンプレートファイル。
author.phpが存在しないとarchive.phpテンプレートで表示され、archive.phpがなければindex.phpが使われます。
date.php
日付または時刻別の投稿一覧ページ用テンプレートファイル。
http://example.com/blog/2014/
http://example.com/blog/2014/05/
http://example.com/blog/2014/05/ 26/
で生成されるページ。
archive.php
カテゴリ、作成者、または日付ごとの投稿一覧ページ用テンプレートファイル。
search.php
検索結果表示用テンプレートファイル。
attachment.php
画像、PDF、またはその他のメディア ファイル表示用テンプレートファイル。
image.php
画像表示用テンプレートファイル。
存在する場合attachment.phpに優先して使用される。
404.php
要求されたページが存在しない場合に使用されるテンプレートファイル。
comment.php
ユーザが登録したコメントを表示するテンプレートファイル。