2015-02-24 29 views
0

基于WordPress的网站的一个php文件中的函数被中断,我认为是由于在转义多个引号和斜杠时出错。转义的JavaScript代码片段WordPress中的PHP函数的内部

这里的代码有问题的行:

echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/js/vendor/jquery-1.11.0.min.js"><\/script>\')</script>' . "\n"; 

生成下面的HTML:

<script>window.jQuery || document.write(' 

其他的一切后'不显示和不执行。

作为临时解决方案,我将关闭<!-- my hack --> </script>标记直接插入到html页面中。

这导致以下HTML输出:

<script>window.jQuery || document.write('<script type='text/javascript' src='/wp-content/themes/my-theme/assets/js/vendor/modernizr-2.7.0.min.js'></script><!-- my hack --></script> 

没有看到任何错误,可能有人请帮忙吗?这里是整个功能:

function roots_jquery_local_fallback($src, $handle = null) { 
    static $add_jquery_fallback = false; 
    if ($add_jquery_fallback) { 

    echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/vendor/jquery/dist/jquery.min.js?1.11.1"><\/script>\')</script>' . "\n"; 

    $add_jquery_fallback = false; 
    } 
    if ($handle === 'jquery') { 
    $add_jquery_fallback = true; 
    } 
    return $src; 
} 
add_action('wp_head', 'roots_jquery_local_fallback'); 

回答

2

PHP没有例子中的单引号(')分隔的字符串中的文本,所以\'不起作用。它确实解释了双引号(“),所以请反过来使用单引号和双引号并使用\”。

echo "<script>window.jQuery || document.write('<script src=\"" . get_template_directory_uri() . "/assets/js/vendor/jquery-1.11.0.min.js\"><\/script>\')</script>" . "\n"; 
+0

太棒了!谢谢@ bobdye!解决了这个问题。 – 2015-02-24 16:54:28