【WordPress】テンプレートに別のテンプレートを読み込む
固定ページの表示には 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