在 WordPress 中转义 JavaScript 片段内部 PHP 函数
Escaping JavaScript snippet Inside PHP function in WordPress
基于 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');
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";
基于 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');
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";