WordPressのテーマを作るとき、テンプレート階層の概念は必須になります。
本記事では、テンプレート階層とは何か、どうやって作るのかについて解説します。
Contents
前提知識
WordPressのテンプレートとは何か
WordPressにおけるテンプレートとは、Webページの種類に対応して用意されるphpファイルのことです。
同じサイトでも役割が異なる
あなたが今ご覧になっているページは、記事ページです。
ここで、ページ上部にある「DOKUPRO」という文字をタップすると、記事を一覧で表示させるホームページになります。
このように、同じWebサイトでもページによって役割が異なります。
WordPressでは、テーマを作る際、役割ごとにphpファイルを分割して管理しやすくします。その分割されたファイルをテンプレートと呼びます。
役割 | テンプレート(例) |
---|---|
ホームページ | front-page.php |
固定ページ | page.php |
記事ページ | single.php |
カテゴリー別の記事一覧ページ | index.php |
サイト内検索結果ページ | search.php |
404エラーページ | 404.php |
違うページでも同じパーツがある
先ほどとは逆に、異なる役割のページでも同じパーツが存在します。
共通するパーツを作るのもテンプレートの役割です。
例えば、ヘッダーを複雑怪奇なコーディングで作ったとします。どんなに長く、複雑であっても、「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が呼び出されます。
それぞれのページが呼び出された時、どのテンプレートが適応されるかについてはルールが決まっています。これが、テンプレート階層です。
ホームページのテンプレート階層
ホームページとは、サイトのドメインがそのまま呼ばれた時に表示するページです。お家で言うと、玄関のようなものです。
ホームページを表示するためのテンプレートは複数ありますが、優先順位があります。
- front-page.php
- (固定ページ)
- home.php
- index.php
投稿ページのテンプレート階層
投稿ページのURLが呼び出された時、適応されるテンプレートの優先順位は以下の通りです。
- (single-{post-type}.php)
- single.php
- singular.php
- inde.php
{post-type}とは、自分で投稿タイプを決める、高度な設定をしたときに使いますが、現時点では理解する必要はありません。
固定ページのテンプレート階層
各ウェブサイトには、お問い合わせページや、そのウェブサイトの目的を説明するページなど、固定されたページが存在します。それらを「固定ページ」と呼びます。
固定ページが呼び出された時、適応されるテンプレートの優先順位は次の通りです。
- page-{slug}.php
- page-{ID}.php
- page.php
- index.php
slugとは、URLの一部分のことで、WordPressの管理画面で、固定ページにスラッグを割り当てることができます。
固定ページ別に見た目を変えたい場合は、page-{slug}.phpを使用します。
カテゴリー別記事一覧のテンプレート階層
カテゴリ別記事一覧とは何かを知りたければ、当サイトの上部にあるカテゴリーのどれかをクリックしてみてください。
上の写真のように、カテゴリー別の一覧ページを表示するためのテンプレート階層も存在しています。
- category-{slug}.php
- category-{ID}.php
- category.php
- archive.php
- index.php
slugとは、URLの一部分のことで、WordPressの管理画面で、カテゴリー自体にスラッグを割り当てることができます。
カテゴリー別に見た目を変えたい場合は、category-{slug}.phpを使用します。
月別記事一覧のテンプレート階層
WordPressには、月別記事一覧を表示する機能もあります。その時のテンプレート階層は次の通りです。
- data.php
- archive.php
- index.php
まとめ
お疲れ様でした。
テンプレートやテンプレート階層の概念は、初めは理解し難いものです。
しかし、便利さを追求して作られた機能なので、慣れてくればその便利さに感心してしまいます。
一気に覚えるのではなくて、初めは次のテンプレートを使用しましょう。
ページの種類 | テンプレート |
---|---|
ホームページ | front-page.php |
投稿ページ | single.php |
固定ページ | page.php |
カテゴリー一覧 | index.php |
月別投稿一覧 | index.php |
最後までお読みいただき、ありがとうございました。