eater

core left after all gone

中島 道(なかじまとおる)

メールアドレス

  • 日記

WordPress2.9で追加されたテンプレート階層

2010 年 2 月 3 日

さっそくですけど、自分WordPressが大好きなんです! なので、暇さえあればいろいろいじってるんですけど、今日は新しい機能を見つけたのでご紹介です。といっても大したことないんですけど。

表題のとおりWordPress2.9での新機能なんですが…。

そもそも、WordPressで構築したサイトの「見た目」についてまずは説明。

  • WordPressはテーマという仕組みを使ってサイトを表示。
  • そのテーマはテンプレートというPHPファイルやCSSファイル等で構成されている。

サイトのデザインは、テンプレートの種類によりデザインを切り替えて表示しています。
テンプレートの種類はいくつもあり必要に応じて使い分けるのですが、めっちゃわかりやすく言うとテンプレートのファイル名の違いで、使用する=読み込むテンプレートを指定することができます。

最低必要となるテンプレートファイルは「index.php」です。
これはすべてのページを「index.php」を用いて表示することを意味しますが、たとえば、トップページのみ違う見た目にしたい場合は「home.php」というファイルを作り、内容を記述します。

この「home.php」というファイル名がポイントで、このファイル名はWordPressにより決められたルールがあります。
つまり、そのルールに則ってテンプレートファイルを作ることで、ページごとに違うデザインを表示することができます。

例)日記というカテゴリのアーカイブページを独自のデザインにしたい場合は、まず日記カテゴリのIDを調べ、テンプレートファイルの名前を「category-(日記カテゴリのID).php」とします。

このように決められたファイル名を使い分けることにより、各ページ独自のデザインを施すことができます。
これを「テンプレート階層」と呼びます。

この決められたファイル名によりテンプレート適用の優先順位が決まるのですが、例えばカテゴリーページの場合、以下の順番で優先順位が変わります。

カテゴリーページのテンプレートの場合
  1. category-ID名.php(例えばカテゴリID6用のテンプレートであれば category-6.php)
  2. category.php
  3. archive.php
  4. index.php

(1)がもっとも優先順位が高いです。

で、以上がWordPress2.8以前の仕様。

ここからが本題。

WordPress2.9以降では、新たにテンプレート階層が追加された。

カテゴリーページのテンプレートの場合
  1. category-スラッグ名.php – 例えばカテゴリーのスラッグが “news” の場合は category-news.php
  2. category-ID名.php – 例えばカテゴリID6 用のテンプレートであれば category-6.php
  3. category.php
  4. archive.php
  5. index.php

※1.が2.9以降で追加

固定ページのテンプレートの場合
  1. ページ作成画面の「ページテンプレー ト」ドロップダウンメニューで選択したファイル名
  2. page-スラッグ名.php – 例えば固定ページのスラッグが “about” の場合は page-about.php
  3. page-ID名.php – 例えば固定ページのIDが6の場合は page-6.php
  4. page.php
  5. index.php

※2.と3.が2.9以降で追加

ポイントはそれぞれ「スラッグ」名をファイル名に含ませることで、テンプレートを適用できるようになったこと。

これは、テンプレート作成の時に結構便利で、とくに固定ページの場合は結局(1)の方法を使っていたんですが、この方法の場合、まず前提としてテンプレートファイル内に特定のPHPコード(※1)を記述しておかなければならず、面倒でした。

面倒くさがりな自分にはこのコードを挿入するというステップがとにかく面倒くさい。作業工程は限りなく少ないほうがいいと思ってるので、このやり方は嬉しいですねー。

ちなみに、この変更は全然知らなかったのですが、自分が講師をしている職業訓練校での授業で、たまたま生徒が発見しました。偶然「page-スラッグ名.php」になってたため、そのままテンプレートとして機能したことで気づきました。

後で調べてみると、WordPressのオフィシャルドキュメントにもしっかり書かれてました。ほんとはこっちが教えないといけないのにねー。教えられましたわ。やっぱドキュメントはこまめに見とかなあきません。

ほなまた。

※1

<?php
/*
Template Name: マイページ
*/
?>

「マイページ」が固有の名前としてページ作成画面の「ページテンプレー ト」ドロップダウンメニューから選択出来るようになります。

トラックバックURI

コメントをどうぞ