有一个快速的问题,
下面的代码是一个简单的函数,用于在WordPress中对脚本进行排队,但问题出在JS上,而不是PHP上。在此状态下,会出现错误:
缺少)参数列表后
我认为我的转义引号的方法有问题,因为通过添加页脚手动使用此脚本可以正常工作。
add_action(\'wp_enqueue_scripts\', function () {
wp_enqueue_style(\'sage/main.css\', asset_path(\'styles/main.css\'), false, null);
wp_enqueue_script(\'sage/main.js\', asset_path(\'scripts/main.js\'), [\'jquery\'], null, true);
$inline_js = \'var $zoho=$zoho || {};$zoho.salesiq = $zoho.salesiq || {widgetcode:"a7d50e2c5dd79539b3393dbeaf47ed569e663414dbe68c618856655be9267b02", values:{},ready:function(){}};
var d=document;s=d.createElement("script");s.type="text/javascript";s.id="zsiqscript";s.defer=true;
s.src="https://salesiq.zoho.com/widget";t=d.getElementsByTagName("script")[0];t.parentNode.insertBefore(s,t);d.write("<div id=\\\'zsiqwidget\\\'></div>")\';
wp_add_inline_script(\'sage/main.js\', $inline_js);
}, 100);
我错过了什么?非常感谢您的帮助!
最合适的回答,由SO网友:Johansson 整理而成
由于您将美元符号与其他一些变量结合使用,因此我假设您试图在内联脚本中获取一个php变量。您将有3个选项。
关闭和打开引号echo
以下方式的变量:
echo \'Hello\' . $world;
使用双引号可以这样编写上述相同的代码:
echo "Hello $world";
注意双引号。
使用曲括号(&A);双引号是最简洁的方法,因为它使阅读代码更加容易:
echo "Hello {$world}";
因此,您的代码可以转换为:
add_action(\'wp_enqueue_scripts\', function () {
wp_enqueue_style(\'sage/main.css\', asset_path(\'styles/main.css\'), false, null);
wp_enqueue_script(\'sage/main.js\', asset_path(\'scripts/main.js\'), [\'jquery\'], null, true);
$inline_js = "
var {$zoho} = {$zoho} || {};
{$zoho}.salesiq = {$zoho}.salesiq || {
widgetcode:\'a7d50e2c5dd79539b3393dbeaf47ed569e663414dbe68c618856655be9267b02\',
values:{},
ready:function(){}
};
var d=document;
s=d.createElement(\'script\');
s.type=\'text/javascript\';
s.id=\'zsiqscript\';
s.defer=true;
s.src=\'https://salesiq.zoho.com/widget\';
t=d.getElementsByTagName(\'script\')[0];
t.parentNode.insertBefore(s,t);
d.write(\'<div id=\\\'zsiqwidget\\\'></div>\')";
wp_add_inline_script(\'sage/main.js\', $inline_js);
}, 100);
我还格式化了代码,以便更容易阅读。