jQuery前置php代码块

时间:2013-04-11 13:20:29

标签: php jquery wordpress

我试图在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

由于 约什

2 个答案:

答案 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从

返回的html
load_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')); ?>');

给我一​​个镜头,对我来说总是像一个魅力。