【WordPress】テンプレートに別のテンプレートを読み込む

固定ページの中で行うページごとに処理を変えたい場合、面倒な処理(コードが長い、コードが複雑、コードがマニアック・・・)は、page.php の中じゃなくて別ファイルに記述して読み込ませたい。
インクルードタグの get_template_part() を使う

固定ページの表示には page.php テンプレートを使用しますが、表示するページによってやりたい処理が違う場合、
(1)条件分岐で処理を逐一書き込んでいくか
(2)ページごとに page-{slug}.php を作るか
ですが、(1)ではコードがやたら長くなってわけわからなくなるし、(2)は同じ記述が重複するファイルがいくつもできてしまうのでスマートじゃない。

重複する処理といえば、わかりやすいところでヘッダーやフッター、サイドバーがそうですが、これらは別ファイルに書き出してそれを読み込む、つまりインクルードしているので、同じように別処理の部分だけを別ファイルに書き出して、テンプレートに読み込ませたいというわけ。

PHPでは、

include (TEMPLATEPATH . ‘/filename.php’)

のように記述するが、WordPressには専用のインクルードタグがあるので、それを使う。

get_template_part(‘templatename’);

テーマのテンプレートディレクトリに置いて、ファイル名だけを記述すればOK。
これで個別処理のモジュール化ができます。^-^

これを利用すると、page.php 内の記述は

<?php if(is_page(‘slug-a’)){
  get_template_part(‘templatename1′);
}elseif(is_page(‘slug-b’)||is_page(‘slug-c’)){
  get_template_part(‘templatename2′);
}elseif(is_page(‘slug-d’)){
  get_template_part(‘templatename3′);
  ・
  ・
  ・
}
?>

みたいな感じかな。

固定ページのデザインやレイアウトは統一したまま、表示するページごと(スラッグで判定)に処理を変えることができてコードもスッキリ!、かつそれぞれの処理は個別にメンテナンスできるので、マネジメントも楽だし。

ちなみに、インクルードタグには

    get_header()
    get_footer()
    get_sidebar()

のほかにも

    comments_template()

なんかはよく使います。

Leave a comment

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


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>