我正在使用PHP为WordPress短代码输出一些JavaScript。我的php看起来像这样:
$output="<script type='text/javascript' >
jQuery(document).ready(function() {
jQuery('#photo{$photo_id}').on('click', function(){
Shadowbox.open({
content: '<div id=\'popup{$photo_id}\' class=\'popup\'>{$content}</div>',
player: 'html',
height: 500,
width: 1200,
handleOversize: 'drag'
});
});
});
</script>";
return $output;
但输出在Shadowbox的内容争论中的第一个引号后面有一个换行符。
像这样:jQuery(document).ready(function() {
jQuery('#stylistphoto1').on('click', function(){
Shadowbox.open({
content: '
<div> id=\'popup1\' class=\'popup\'> . . .
这给了我一个“未终止的字符串文字”错误并使我的脚本失败。
发生了什么事?
注意: 一个。这是在没有BOM的情况下以UTF-8编码的。 湾这确实有效。 C。如果我传递一个空字符串作为内容争论,它工作得很好,当然,这对我没有任何帮助。
答案 0 :(得分:0)
首先,我不会在php变量中定义javascript功能,然后在某处回复,这是一种非常糟糕的做法。
这里的问题可能是你的造型上有些东西是破线的,因为它很长。您可以采取以下措施来解决此问题:
$output="<script type='text/javascript' >
jQuery(document).ready(function() {
jQuery('#photo{$photo_id}').on('click', function(){
Shadowbox.open({
content: '<div id=\'popup{$photo_id}\' ' +
'class=\'popup\'>{$content}</div>',
player: 'html',
height: 500,
width: 1200,
handleOversize: 'drag'
});
});
});
</script>";
return $output;
答案 1 :(得分:0)
在我看来,content: '<div id=\'popup{$photo_id}\' class=\'popup\'>{$content}</div>'
是一个问题,因为参数content
的值被解释为'<div id=\'
。它停在下一个引号。如果你的PHP版本不喜欢这个(看起来像这样),你应该通过连接来分离这部分变量。
$output="<script type='text/javascript' >
jQuery(document).ready(function() {
jQuery('#photo{$photo_id}').on('click', function(){
Shadowbox.open({";
$output .= "
content: '<div id=\"popup{$photo_id}\" class=\"popup\">{$content}</div>,'";
$output .= "
player: 'html',
height: 500,
width: 1200,
handleOversize: 'drag'
});
});
});
</script>";
return $output;
更好的做法是尽可能使用'用于你的echo语句和“内部的所有内容,以避免处理引用转义,例如echo 'My friend says "hello", Tom.';
答案 2 :(得分:0)
WordPress的一个自动格式化功能,wpautop过滤器导致了问题。
我已经在使用Chris Coyer的“原始”短代码,(http://css-tricks.com/snippets/wordpress/disable-automatic-formatting-using-a-shortcode/)所以答案就像包装一样简单[raw] [/ raw]中的脚本在将其输出回内容区域之前将其缩短。
哈哈哈!