WordPress

テンプレート

投稿などのデータベースに格納されたデータをテンプレート(ページの雛形)を使って出力・表示します。

テンプレートファイルは HTML、PHP、テンプレートタグで構成されています。

アクセスされたページに合わせて、表示するテンプレートファイルが自動的に選択されるようになっています。(テンプレートからページへの変換)

1つのテーマには複数のテンプレートを入れてページの種類によって使い分けることができます。

テンプレートの名前(ファイル名)は WordPress が定めたルールがあり以下のようなテンプレートがあります(一部抜粋)。

テンプレートの例

ページの種類 テンプレート 概要
テーマの必須ファイル index.php 他に適切なテンプレートが存在しない場合に最終的に使用されるファイル(最も汎用的なテンプレート)
フロントページ front-page.php サイトのトップページを出力
ホーム(メイン)ページ home.php ブログのトップページを出力
固定ページ page.php 個々の固定ページを出力
投稿 single.php 個々の投稿のページを出力
カテゴリー category.php カテゴリーごとのアーカイブ(一覧)ページを出力
タグ tag.php タグごとのアーカイブ(一覧)ページを出力
作成者 author.php 作成者別のアーカイブ(一覧)ページを出力
日付 date.php 日付ごとのアーカイブ(一覧)ページを出力
アーカイブ archive.php アーカイブ(一覧)ページを出力
検索フォーム searchform.php 検索フォームのページ
検索結果 search.php 検索結果のページを出力
404 (Not Found) 404.php 404エラー(Not Found)ページを出力
共通 header.php
footer.php
sidebar.php
全ページ共通で使用
(ヘッダー、フッター、サイドバー)

テンプレート階層

アクセスされたURLをもとに、各ページをテンプレートに基づいて出力します
その際に、複数のテンプレートの中から優先順位が高いものを選択する仕組みを「テンプレート階層(Template Hierarchy)」と呼びます

WordPress Codex(日本語版):テンプレート階層

例えば、個々の投稿のページはテーマの中に single-post_type.php と言うテンプレートが含まれていれば、そのテンプレートを使って出力しますが、single-post_type.php がない場合は、single.php というテンプレートを使って出力します。single-post_type.php も single.php もなければ singular.php というテンプレートを使います(singular.php は Version 4.3 以降)。いずれのテンプレートもなければ、index.php を使って出力します。

テンプレートファイルの優先順位

左側ほど優先順位が高いテンプレートになります。

右側にあるほど優先順位は低くなり、逆に適用されるページの種類が多くなります。

single-post_type.php は投稿専用のテンプレートですが、singular.php は投稿だけではなく、固定ページのテンプレートにも含まれます。もし、投稿と固定ページの構造がほぼ同じ場合、singular.php で投稿と固定ページの両方を出力するというようなことが可能です。

※テーマを作成する際は、テンプレート階層を理解して、作成するサイトの構造に合う適切なテンプレートを選択することがとても大切です。

ページの種類
条件分岐タグ
高い ← 優先度 → 低い
フロントページ
is_front_page
front-page.php index.php
ホームページ
is_home
home.php
カテゴリー
is_category
category-slug.php category-id.php category.php archive.php
タグ
is_tag
tag-slug.php tag-id.php tag.php
カスタム分類
is_tax
taxonomy-taxonomy-term.php taxonomy-taxonomy.php taxonomy.php
作成者
is_author
author-nicename.php author-id.php author.php
日付
is_date,is_day
is_month
is_year
date.php
アーカイブ
is_archive is_post_type_archive
archive-post_type.php
検索結果
is_search
search.php
404 (Not Found)
is_404
404.php
固定ページ
is_pageis_singular
customname.php
(カスタムページテンプレート)
page-slug.php page-id.php page.php singular.php
投稿/カスタム投稿
is_single
is_singular
single-post_type.php single.php
添付ファイル
is_attachment
is_singular
MIME_type.php
image.php
video.php
audio.php
application.php
attachment.php single-attachment.php