特定のときだけ、テンプレートを切り替えたい。そんなことを考えていたある日 コードをよんでたら、フックがみつかったのでメモ。 今回は、jqueryの$.ajaxで呼ばれたときは、ajax-xxx.phpが呼ばれるようにしてみました。
add_filter("template_include", "test_template");
// $templateには読み込むテンプレートのパスが来ます
function test_template($template){
// jqueryからのXMLHttpRequestでない場合なんもしない
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
return $template;
}
if(strpos($template , STYLESHEETPATH) !== FALSE) {
$template_name = str_replace(STYLESHEETPATH . '/', "", $template);
$template = STYLESHEETPATH . '/ajax-' .$template_name;
} else if(strpos($template , TEMPLATEPATH ) !== FALSE){
$template_name = str_replace(TEMPLATEPATH . '/', "", $template);
$template = TEMPLATEPATH . '/ajax-' .$template_name;
}
return $template;
}
もっと良い方法があるような気もするけど、各テンプレートにif文書くよりはマシな気がする
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。