wordpress における template を理解する

Stepping Into Templates を読みながらまとめていきます。

テンプレートファイルは wordpress ページを構成するブロックで、パズルのピースのようなものです。
通常ウェブページと言うと html 及び css の2つの要素から構成されますが wordpress では様々なテンプレートファイルによってこれらが生成されます。
テンプレートファイルとスタイルシートは wordpress テーマとして一緒に保存されます。

wordpress ページの構成

シンプルな wordpress ページ構造は3つのブロックから構成されます。

headerブロック

ページ上部で構成される必要な情報を出力します。これはなんとなくイメージできるように head タグも含みますが、body としての構造の中にも渡ります。
テーマとしてはロゴやグローバルナビゲーションやタイトルとかページ上部に表示されているコンテンツまで含めて header として認識します。

contentブロック

記事やページなどブログとしてのメインコンテンツを content ブロックとして表示します。

footer

ページ下部にあるコンテンツを表示するためのブロックです。ナビゲーション、コピーライト、他のページやカテゴリへのリンクなどなどですね。

基本的なテンプレートファイル

wordpress システムはテーマとしてこれらの構成を出力するためにテンプレートディレクトリに存在する index.php テンプレートファイルを起点として処理をします。
このファイルは2つの機能を持っています。

  • 他のテンプレートを呼び出す。テンプレートタグを使います。
  • データベースからの情報を出力するために wordpress loop を呼び出す

例えばシンプルな構成としてヘッダーとフッターだけが存在するページを想定すると、実装としては下記のようになります




それぞれのテンプレートタグでは同じテンプレートディレクトリに存在する header.php 及び footer.php を呼び出しています。
通常 WordPressLoop を使いながら content を呼び出す処理はこの header, footer の間に実装することになります。

より複雑なページ

多くのテーマは一つ以上の情報をサイドバーとして表示します。例えばナビゲーションなどの情報をサイドバーに表示したりします。
サイドバーは sidebar.php 内部に実装され、例えば index.php から呼び出したいときには下記のテンプレートタグを呼び出します


ネストしたテンプレートファイル

これまでに index.php から footer, header, sidebar テンプレートを呼び出すサンプルを見てきましたが、呼び出されるテンプレートの中から更に別のテンプレートを呼び出すことも可能です。

例えば sidebar.php の中でさらに searchform.php として実装される検索フォームを表示したいときには下記のように実装を追加します。


特別なテンプレートファイル

wordpress には大きく分けて2つのページビューが存在します。一つは単一の記事を表示するビューで、もう一つは複数の記事を表示するビューです。複数の記事を表示するビューはカテゴリアーカイブ、日付別アーカイブ、記事作成者アーカイブ、また通常のトップページに分類されます。
これらの複数の記事を表示するために、index.php ファイルとして対応しても良いし、テンプレート階層の仕組みを理解することで個別に使用されるテンプレートを使うこともできます。

wordpress で用いるテンプレートファイルは規則に乗っ取ることで命名しておくことで、各ページで使用される際に自動的に認識されて使用されます。
このどういうページでどのテンプレートが使用されるかというのを「テンプレート階層」として表現します。

例えば記事詳細を表示するときには index.php よりも single.php というテンプレートファイルが優先して適用されます。single.php が存在しなければ最終的には index.php が適用されます。
またあるカテゴリの情報を表示するときには、まず category.php を優先して適用し、存在しなければ achirve.php を適用します。それも存在しない場合は最終的に index.php を適用します。

テンプレートファイルTips

開始タグと終了タグをちゃんと追跡する

テンプレートタグを利用すると開始タグと終了タグがそれぞれ別のテンプレートタグによって生成されることがあります。
例えば header.php でhtmlbody タグの開始を宣言しているのですが、その終了タグは footer.php の方に宣言されています。
もし独自のテンプレートを生成するのであればこれらがあまり複雑になりすぎないように注意してください。もしやむを得ず複雑になってしまう場合はコメントなどを記述しておいてください。

当たり前のことですね。php ならではの実装となっていますが、厳しいことを言ってしまうとそもそもの設計自体があまり良くないですね。
反面学習コストが小さく触ってみてとっつきやすいとは思いますので、結果だけ見ると wordpress は普及したわけですし、そちらのほうが適切だったと言えましょう。

スタイル標準

もしスタイルを調整するのであれば wordpress テーマの標準構造 があるのでそれに従って見てください。他のユーザにとっても理解しやすいものにもなります。

まとめ

なんとなくテンプレートがどんなものかということが理解できました。
基本的には表示されるページに応じて、読み込まれるテンプレートファイルが自動的に変わるということですね。で、各パーシャルファイルはテンプレートタグを用いて読み込みを行ってください。という感じです。
またご自分でテンプレートをいじるようだったら wordpress のテーマ標準などに従って変更してください。という感じです。

時間があれば次はテンプレートの開発の項目や、テーマや、テーマ標準構造についても目を通してみたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください