如何写的WordPress的functions.php内部的JavaScript函数?(How to

2019-10-20 09:19发布

我改变对开发者的建议(插件见最新的帖子 ),该通知:写一些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没有让我实现了我的追求。 为此,既感谢!

Answer 1:

当你使用双引号,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;


Answer 2:

有在WordPress更好的和标准的方式

<?php
function add_js_functions(){
?>
<script>
// your js functions here 
</script>
<?php
}
add_action('wp_head','add_js_functions');


Answer 3:

你需要等待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()
        }));
    });
});


Answer 4:

当您使用双引号""来定义JS字符串,PHP将解释$group作为一个变量。 为了解决这个问题,你需要使用单引号''来代替。



文章来源: How to write a Javascript function inside the functions.php of Wordpress?