デザインカスタマイズをしていくにあたって、便宜的に改修中のデザイン(テンプレート)と、実運用を切り替えられる仕組みがあると良いなと思い、調査しました。
その結果、切り替えて確認できるのがトップページに限定されるものの、なんとか近しいハックがわかったので、番外編として残しておく。
まず、通常のキャッシュ化(または過去アーカイブ、カテゴリ表示等の非キャッシュ表示)には存在しないGETパラメータを仕様追加した。
template=TestTemplateとする。(TestTemplateは適宜読み替えてください)
→ http://www.hoge.com/?template=TestTemplate
とすることでテスト用のテンプレート表示が可能。
そのうえで、テンプレートを決定する関数(2つ)をGETパラメータ有無により挙動が変わるような仕掛け。
◆wp-include/theme.php
下記の2関数を元の処理から変更する。テンプレート名をハードコーディング
しているので、適宜変更して欲しい。
function get_template() {
global $_GET;if ( $_GET[‘template’] == “TestTemplate” ) {
return apply_filters(‘template’, $_GET[‘template’]);
} else {
return apply_filters(‘template’, get_option(‘template’));
}
}function get_stylesheet() {
global $_GET;
if ( $_GET[‘template’] == “TestTemplate” ) {
return apply_filters(‘stylesheet’, $_GET[‘template’]);
} else {
return apply_filters(‘stylesheet’, get_option(‘stylesheet’));
}
}
◆補足
本来であればGETパラメータに応じたディレクトリ(テンプレート)の存在有無を
チェックした上で、動的にテンプレート名を決定指定ところだったが、どうも
テンプレートのBASEディレクトリを決定するためのdefine(TEMPLATEPATH)が、
実体としては
get_template_directory()
という関数で、その中でさらに上記のget_template()をコールしているため、
存在確認のためのBASEディレクトリにdefineを用いると、多重コールとなって、
意図した動作をしない(BASEディレクトリが未定義となる)ことがわかった。
というわけで、存在チェックを外している。
No comments yet. You should be kind and add one!
By submitting a comment you grant typista a perpetual license to reproduce your words and name/web site in attribution. Inappropriate and irrelevant comments will be removed at an admin’s discretion. Your email is used for verification purposes only, it will never be shared.