【WordPress】テンプレートやテンプレート階層とは何か?【分かりやすく】

テンプレート階層

WordPressのテーマを作るとき、テンプレート階層の概念は必須になります。
本記事では、テンプレート階層とは何か、どうやって作るのかについて解説します。

前提知識

WordPressのテンプレートとは何か

WordPressにおけるテンプレートとは、Webページの種類に対応して用意されるphpファイルのことです。

同じサイトでも役割が異なる

テンプレートとは
Webサイトはページによって役割が異なります

あなたが今ご覧になっているページは、記事ページです。
ここで、ページ上部にある「DOKUPRO」という文字をタップすると、記事を一覧で表示させるホームページになります。

このように、同じWebサイトでもページによって役割が異なります。

WordPressでは、テーマを作る際、役割ごとにphpファイルを分割して管理しやすくします。その分割されたファイルをテンプレートと呼びます。

役割テンプレート(例)
ホームページfront-page.php
固定ページpage.php
記事ページsingle.php
カテゴリー別の記事一覧ページindex.php
サイト内検索結果ページsearch.php
404エラーページ404.php
Webページの役割とテンプレートファイルの例

違うページでも同じパーツがある

先ほどとは逆に、異なる役割のページでも同じパーツが存在します。

テンプレート・共通部分
共通するパーツがあります

共通するパーツを作るのもテンプレートの役割です。

例えば、ヘッダーを複雑怪奇なコーディングで作ったとします。どんなに長く、複雑であっても、「header.php」というファイルに、テンプレートとして記述したならば、

<?php get_header ?>

と記述するだけで、簡単に埋め込めてしまいます。

パーツテンプレート(例)
ヘッダーheader.php
フッターfooter.php
サイドバーsidebar.php
共通するパーツとテンプレートファイルの例

テンプレート階層とは何か?

テンプレート階層とは、ページが生成される時、どのテンプレートを使うのかを定める決まりです。

WordPressでテーマとして認識されるためには、最低でもindex.phpというテンプレートが必要です。(参考:【WordPress】テーマの作り方の基本
そこで、index.phpというテンプレートだけ作ったとしましょう。
すると、ホームページ(URL例:example.com)にアクセスされたとしても、記事ページ(URL例:example.com/post=12)にアクセスされたとしても、index.phpというテンプレートがページの生成に用いられます。

テンプレート階層とは
テンプレートファイルが一つの場合

しかし、テーマフォルダの中にsingle.phpというファイルを追加したとします。すると、ホームページが呼び出された時はindex.phpが適応され、投稿ページが呼び出された時はsingle.phpが呼び出されます。

テンプレート階層の仕組み
テンプレートが二つあった場合

それぞれのページが呼び出された時、どのテンプレートが適応されるかについてはルールが決まっています。これが、テンプレート階層です。

ホームページのテンプレート階層

ホームページとは、サイトのドメインがそのまま呼ばれた時に表示するページです。お家で言うと、玄関のようなものです。

ホームページを表示するためのテンプレートは複数ありますが、優先順位があります。

  1. front-page.php
  2. (固定ページ)
  3. home.php
  4. index.php

投稿ページのテンプレート階層

投稿ページのURLが呼び出された時、適応されるテンプレートの優先順位は以下の通りです。

  1. (single-{post-type}.php)
  2. single.php
  3. singular.php
  4. inde.php

{post-type}とは、自分で投稿タイプを決める、高度な設定をしたときに使いますが、現時点では理解する必要はありません。

固定ページのテンプレート階層

各ウェブサイトには、お問い合わせページや、そのウェブサイトの目的を説明するページなど、固定されたページが存在します。それらを「固定ページ」と呼びます。

固定ページが呼び出された時、適応されるテンプレートの優先順位は次の通りです。

  1. page-{slug}.php
  2. page-{ID}.php
  3. page.php
  4. index.php

slugとは、URLの一部分のことで、WordPressの管理画面で、固定ページにスラッグを割り当てることができます。
固定ページ別に見た目を変えたい場合は、page-{slug}.phpを使用します。

カテゴリー別記事一覧のテンプレート階層

カテゴリ別記事一覧とは何かを知りたければ、当サイトの上部にあるカテゴリーのどれかをクリックしてみてください。

テンプレートファイル・カテゴリー
カテゴリーをクリック
カテゴリーテンプレート
本サイトのカテゴリー別一覧ページ

上の写真のように、カテゴリー別の一覧ページを表示するためのテンプレート階層も存在しています。

  1. category-{slug}.php
  2. category-{ID}.php
  3. category.php
  4. archive.php
  5. index.php

slugとは、URLの一部分のことで、WordPressの管理画面で、カテゴリー自体にスラッグを割り当てることができます。
カテゴリー別に見た目を変えたい場合は、category-{slug}.phpを使用します。

月別記事一覧のテンプレート階層

WordPressには、月別記事一覧を表示する機能もあります。その時のテンプレート階層は次の通りです。

  1. data.php
  2. archive.php
  3. index.php

まとめ

お疲れ様でした。

テンプレートやテンプレート階層の概念は、初めは理解し難いものです。
しかし、便利さを追求して作られた機能なので、慣れてくればその便利さに感心してしまいます。

一気に覚えるのではなくて、初めは次のテンプレートを使用しましょう。

ページの種類テンプレート
ホームページfront-page.php
投稿ページsingle.php
固定ページpage.php
カテゴリー一覧index.php
月別投稿一覧index.php
おすすめの基本テンプレート

最後までお読みいただき、ありがとうございました。