WordPress 1.5 テンプレートの移行とテーマの作り方 その2

その1

テンプレートの細分化

標準で以下の関数が用意されている

  • get_header( void ):header.phpを読み込む
  • get_footer( void ):footer.phpを読み込む
  • get_sidebar( void ):sidebar.phpを読み込む

これらは内部的にrequire_onceで読み込んでいる。自分でrequireしたい場合は、

require( TEMPLATEPATH . "header.php" );

このようにすることで任意のテンプレートを好きなように呼び出すことが出来る。

テンプレートの選択

もし規定のテンプレートファイルが存在しない場合は次の候補を探していき、それでもない場合はindex.phpが呼ばれることになっている。

例えば、m=200412などというような形で呼び出した場合、まず始めにdate.phpを探し、存在しないならarchive.phpを探して読み込んでいく。呼び出す形式によって複数の候補が存在するので注意が必要だ。

めんどい人はindex.phpにまとめて、他のphpファイルを削除してもいいかもしれない。たが、そうするとindex.phpで各々の処理を書く必要が出てくる。

そこで、WordPressには現在の表示モードを知ることが出来る関数が用意されているので、それを利用して条件分岐に利用するなどして表示モード毎の処理を記述していく。。

例えば、is_singleならば記事が単体で呼び出されているならTRUEを返してくれる。is_categoryならカテゴリ表示かどうかを。is_homeならホームが引数無しで呼ばれているかどうかを返してくれる。以下に使用例を。

< ?php if (is_single()) : ?>
<!-- 記事単体 例:http://www.hoge.com/index.php?p=100 -->
< ?php elseif (is_date()) : ?>
<!-- 日付 例:http://www.hoge.com/index.php?m=200501 -->
< ?php elseif (is_category()) : ?>
<!-- カテゴリ 例:http://www.hoge.com/index.php?cat=5 -->
< ?php elseif (is_home()) : ?>
<!-- ホーム 例:http://www.hoge.com/index.php -->
< ?php endif; ?>

defaultテーマのcategory.phpも参考になるだろう。これを利用すれば、index.phpだけであらゆるパターンの処理を行うことができる。