WordPressはブラウザからの要求を解析して使用するテンプレートを判定します。
しかし名前つけの法則が複雑で、テーマの作成者側からするとわかり難いのが困りものです。
そこで、テンプレート名について調べてみました。
テンプレート選択の流れ
WordPressは、まずはURLを解析して表示するWebページの種類を判断します。
判断結果は、is_home()などの判定関数で確認します。
次に下表の順番で、判定関数を実行します。
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 1 | 埋め込み投稿ページ | is_embed() |
|
| 2 | 404ページ | is_404() | 404.php |
| 3 | 検索ページ | is_search() | search.php |
| 4 | フロントページ | is_front_page() | front-page.php |
| 5 | ホーム(トップ) ページ |
is_home() |
|
| 6 | プライバシー ポリシー |
is_privacy_policy() | privacy-policy.php |
| 7 | 投稿タイプの アーカイブページ |
is_post_type_archive() |
|
| 8 | カスタムタクソノミー ページ |
is_tax() |
|
| 9 | 添付ファイルページ | is_attachment() |
|
| 10 | 投稿ページ | is_single() |
|
| 11 | 固定ページ | is_page() |
|
| 12 | 投稿・固定・ 添付ファイルページ |
is_singular() | singular.php |
| 13 | カテゴリーページ | is_category() |
|
| 14 | タグページ | is_tag() |
|
| 15 | 投稿者ページ | is_author() |
|
| 16 | 日付アーカイブページ | is_date() | date.php |
| 17 | カテゴリー・タグ・ 投稿者・日付 アーカイブページ |
is_archive() |
|
| 18 | index.php |
判定関数がtrueを返したら、ファイル名候補に挙げてあるファイルが存在するかを順番に確認します。
つまり、一つのファイルに対して最高3回存在チェックをしています。
- 子テーマディレクトリ
- 親テーマディレクトリ
- /wp-includes/theme-compat/
- テーマディレクトリ
- /wp-includes/theme-compat/
子テーマについて、少し調べてみました。次の記事を読んでみてください。
ファイルが存在していたら、そのファイルが目的のテンプレートファイルです。
以降のチェックは行いません。
全てのパターンに一致しない場合は、最後の index.php が選択されます。
簡単な解説
前項の表中のファイル名候補は、WordPressのソースコードでの表記を記述してあります。
わかり難い部分を捕捉します。
埋め込み投稿ページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 1 | 埋め込み投稿ページ | is_embed() |
|
embedは、Webページ内に埋め込む目的で呼び出されます。
URL貼り付けで表示されるリンクカードなどがembedです。
ファイル名候補の一部は、次の規則で置き換えられます。
- $object->post_type
投稿タイプ。'post'や'page'など。 - $post_format
投稿のフォーマット。'link'や'image'など。
テーマ毎に有効化されている必要がある。投稿のフォーマットとは、テーマTwenty Seventeenの投稿ページにある次のような選択。
投稿タイプのアーカイブページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 7 | 投稿タイプの アーカイブページ |
is_post_type_archive() |
|
投稿タイプごとの一覧ページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- $object->post_type
投稿タイプ。'post'や'page'など。
カスタムタクソノミーページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 8 | カスタムタクソノミー ページ |
is_tax() |
|
カスタムタクソノミーのページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- $taxonomy
タクソノミー名。 - $term->slug
スラッグ。 - $slug_decoded
$term->slugをurldecode()の引数として実行した結果。
添付ファイルページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 9 | 添付ファイルページ | is_attachment() |
|
アップロードした画像やファイルのページです。
※ファイルへのURLではありません。添付ファイルページのURLはメディアライブラリで確認できます。
ファイル名候補の一部は、次の規則で置き換えられます。
- $type
'image/png' などのMIMEタイプの '/' より前の部分 - $subtype
'image/png' などのMIMEタイプの '/' より後ろの部分
投稿ページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 10 | 投稿ページ | is_single() |
|
投稿記事のページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- get_post_meta( $post->ID, '_wp_page_template', true )の結果
データベースのpost_metaテーブルから、_wp_page_templateの値を取得した結果 - $object->post_type
'post'などの投稿タイプ - $object->post_name
投稿名 - $name_decoded
$object->post_nameをurldecode()の引数として実行した結果。
固定ページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 11 | 固定ページ | is_page() |
|
固定記事のページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- get_post_meta( $post->ID, '_wp_page_template', true )の結果
データベースのpost_metaテーブルから、_wp_page_templateの値を取得した結果 - $pagename
固定記事名 - $name_decoded
$pagenameをurldecode()の引数として実行した結果。 - $id
固定記事のID。
カテゴリーページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 13 | カテゴリーページ | is_category() |
|
カテゴリーのページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- $category->slug
カテゴリーのスラッグ - $slug_decoded
$category->slugをurldecode()の引数として実行した結果。 - $category->term_id
カテゴリーのID
タグページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 14 | タグページ | is_tag() |
|
タグのページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- $tag->slug
タグのスラッグ - $name_decoded
$tag->slugをurldecode()の引数として実行した結果。 - $tag->term_id
タグのID
投稿者ページ
| 順番 | ページタイプ | 判定関数 | ファイル名候補 |
|---|---|---|---|
| 15 | 投稿者ページ | is_author() |
|
投稿者のページです。
ファイル名候補の一部は、次の規則で置き換えられます。
- $author->user_nicename
投稿者のニックネーム - $author->ID
投稿者のID
カテゴリー・タグ・投稿者・日付アーカイブページ
| 17 | カテゴリー・タグ・ 投稿者・日付 アーカイブページ |
is_archive() |
|
カテゴリーやタグなどのカテゴリ系ページの表示で、個々のテンプレートが存在しない場合に呼び出されます。
ファイル名候補の一部は、次の規則で置き換えられます。
- $post_type
投稿タイプ
その他のテンプレート
WordPressにはheader.phpやfooter.phpなど、ここまで紹介していないテンプレートがあります。
これらはテンプレート選択の流れで挙げているテンプレート内で、対応する関数を呼び出すことで組みこまれます。
| 呼び出し関数 | 引数 | ファイル名候補 | アクション |
|---|---|---|---|
| get_header() | $name = null, $args = array() |
|
get_header |
| get_footer() | $name = null, $args = array() |
|
get_footer |
| get_search_form() | $args = array() |
|
pre_get_search_form |
| get_sidebar() | $name = null, $args = array() |
|
get_sidebar |
引数$argは、load_template()関数に渡されます。
ファイル名候補の$nameは、引数の$nameです。
アクションは、テンプレートの読み込み前に実行されます。
また、呼び出し関数と同じ引数を受け付けます。
自作テンプレートの読み込み
WordPressで定義されていない自作のテンプレートは、get_template_part()関数で読み込みます。
この関数も、子テーマに対応しています。
| 呼び出し関数 | 引数 | ファイル名候補 | アクション |
|---|---|---|---|
| get_template_part() | $slug, $name = null, $args = array() |
|
get_template_part_{$slug} |
この関数は、テンプレートの読み込み前に次の二つのアクションを実行します。
- get_template_part_{$slug}
引数:$slug, $name, $args - get_template_part
引数:$slug, $name, $templates, $args
$slug, $name, $argsはget_template_part()の引数で、$templatesは読み込み予定のテンプレート名です。
■Googleで他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール





こんにちは。