我改变对开发者的建议(插件见最新的帖子 ),该通知:写一些JavaScript中functions.php
的WordPress。
现在,当我这样做,我的整个WordPress的一片空白。 嗯,有点思维后。“你可以不写普通的JavaScript PHP的内部” ..
所以我写了他们里面<script>
标记,和那里面echo "
";
标签。 现在..我不能确定工作的功能(没有测试该还),但WordPress是再次呈现,但..我得到消息
注意:未定义变量:组中/home/appelhulp/domains/appelhulp.nl/public_html/wp-content/themes/Divi/functions.php第8行
注意:未定义的变量:第9行中/home/appelhulp/domains/appelhulp.nl/public_html/wp-content/themes/Divi/functions.php选项
注意:未定义的变量:行25 /home/appelhulp/domains/appelhulp.nl/public_html/wp-content/themes/Divi/functions.php选项
这是代码文件
所以我的问题:
这是什么问题以及如何使这些消息消失?
正确答案
虽然我接受了@布拉克的答案,这是唯一的正确答案的一半。 另请参阅@ RahilWazir的一部分,这对他/她的答案的一半属于解决方案。 作为布拉克带着正确的脚本,RahilWazir附带的建议,将其放置在footer.php
代替functions.php
。 并把它放在那里,没有的伎俩。 在functions.php
没有让我实现了我的追求。 为此,既感谢!
当你使用双引号,PHP会认为与变量$
迹象PHP变量。 你需要或者其更改为单引号,要么重新安排代码,你需要看一看定界符 ,适用于这样的情况。
echo <<<'EOT'
<script>
( function() {
var categories = {};
var $group = jQuery();
jQuery('select.app_select_services option').remove().each(function() {
var $option = jQuery(this),
contents = $option.text().split(' - '),
group = jQuery.trim(contents[1]);
if (!categories.hasOwnProperty(group)) {
var optGroup = jQuery('<optgroup />', { label: group });
optGroup.appendTo('select.app_select_services');
categories[group] = optGroup;
}
categories[group].append(jQuery('<option />', {
text: jQuery.trim(contents[0]),
value: jQuery(this).val()
}));
});
} )();
</script>
EOT;
有在WordPress更好的和标准的方式
<?php
function add_js_functions(){
?>
<script>
// your js functions here
</script>
<?php
}
add_action('wp_head','add_js_functions');
你需要等待DOM被完全初始化。 因此,包装内的jQuery的片段ready
处理。 甚至更好的地方是把这个片段在你的footer.php
文件在关闭之前</body>
标签。
jQuery(document).ready(function($) { // <-- wrap it
var categories = {};
var $group = jQuery();
jQuery('select.app_select_services option').remove().each(function() {
var $option = jQuery(this),
contents = $option.text().split(' - '),
group = jQuery.trim(contents[1]);
if (!categories.hasOwnProperty(group)) {
var optGroup = jQuery('<optgroup />', { label: group });
optGroup.appendTo('select.app_select_services');
categories[group] = optGroup;
}
categories[group].append(jQuery('<option />', {
text: jQuery.trim(contents[0]),
value: jQuery(this).val()
}));
});
});
当您使用双引号""
来定义JS字符串,PHP将解释$group
作为一个变量。 为了解决这个问题,你需要使用单引号''
来代替。