2011年12月21日に投稿

[WordPress]任意のGETパラメーターの値に応じて読み込ませるテンプレートを切り替える

標準のWordPressの機能として、GETパラメーターに応じて表示されるテンプレートが切り替わるようになっています。例えば、p=15というパラメーターがindex.phpに渡されると、single.phpがテンプレートとして読み込まれ、投稿IDが15の投稿の内容が表示されます。また、s=helloというパラメーターが渡されると、search.phpがテンプレートとして読み込まれ、「hello」というキーワードでの検索結果が表示されます。もしこのパラメーターにオリジナルのものが利用できたらカスタマイズの幅が広まりますよね。そこでオリジナルのパラメーターの値に応じて、オリジナルのテンプレートを読みこませる方法を調べました。

オリジナルパラメーターの値に応じてオリジナルのテンプレートを読み込むプラグインのコードを下記に示します。動作確認はバージョン3.1.3で行なっています。

[php]

上記のコードを日本語化すると下記のようになります。
 ・オリジナルのパラメーター「size」を受け取るようにする。
 ・sizeの値がsmallだった場合はsmall.phpを読み込む。
 ・sizeの値がmediumだった場合はmedium.phpを読み込む。
 ・sizeの値がlargeだった場合はlarge.phpを読み込む。
 ・sizeの値がsmall、medium、largeのどれでもない場合は何もしない。

13行目
$_GET配列からパラメーターを受け取ります。受け取った値に応じて、どのテンプレートを読み込むのか条件分岐処理を記述します。(GETパラメーターの簡単で安全な受け取り方はWordPressが用意してくれているかも…)
読み込ませたいテンプレートはTEMPLATEPATH (テーマのパス、現在使用中のテーマのsingle.phpやsearch.phpが格納されているディレクトリ)に予めアップロードしておきます。

34行目
この動作を実現するために必要なのがアクションフック「templage_redirect」です。このアクションフックはテンプレートの読み込み前に実行されます。そのため、テンプレートの読み込みが成功したらexit構文で処理を終了しています。

関連記事

One Response to “[WordPress]任意のGETパラメーターの値に応じて読み込ませるテンプレートを切り替える”

  1. […] [WordPress]任意のGETパラメーターの値に応じて読み込ませるテンプレートを切り替える http://codaholic.org/?p=1381 […]

Leave a Reply