我试图在wordpress中将我的php模板添加到我的wordpress登录表单中。
他们只能在wordpess登录体中编辑标记,这是通过jquery预先添加。
这是我的php模板加载:<?php load_template_part('menu'); ?>
这是我的加载模板过滤器,用于过滤get_template_part();
...
// LOAD TEMPLATE PART
function load_template_part($template_name, $part_name=null) {
ob_start();
get_template_part($template_name, $part_name);
$var = preg_replace('/\s\s+/', "", ob_get_contents());
ob_end_clean();
return $var;
}
在此过滤器中,我使用此... preg_replace('/\s\s+/', "", ob_get_contents());
然后我尝试使用此jquery附加此模板部分...
var menu = '<?php echo load_template_part('menu'); ?>';
$("body").prepend(menu);
但由于我的php load_template_part字符串中的换行符,它会出现javascript语法错误。
任何人都可以帮助我从php字符串中删除换行符或建议另一种方法让我的php块安全地进入我体内。
输出来源:https://gist.github.com/jcranny/5363379
由于 约什
答案 0 :(得分:2)
如果您只是用空格替换所有换行符怎么办?
var menu = '<?php echo preg_replace('/[\r\n]+/',' ',load_template_part('menu')); ?>';
虽然我没有对它进行过测试(借鉴this answer),但这可能会更可靠地工作:
var menu = '<?php echo json_encode(load_template_part('menu')); ?>';
答案 1 :(得分:0)
之前我遇到过这个问题,如果“模板”包含单引号,你就会遇到问题。我使用的工作是base64_encode从
返回的htmlload_template_part()
然后从phpjs.org中获取base64_decode库。这将确保字符串不包含可能导致JS语法错误的非法字符。
例如:
// With Base64 object from phpjs.org
var menu = Base64.decode('<?php echo base64_encode(load_template_part('menu')); ?>');
给我一个镜头,对我来说总是像一个魅力。