插件激活导致wp_Register错误

时间:2019-05-31 作者:treyBake

我一直在WordPress中制作一个find-a-dealer类型的插件,我终于完成了所有的工作,所有的东西都在我的本地and 开发服务器。

我将其推向生产,激活后,我会收到以下错误/警告:

注意:wp\\u register\\u style的调用不正确。在wp\\u enqueue\\u脚本、admin\\u enqueue\\u脚本或login\\u enqueue\\u脚本挂钩之前,不应注册或排队脚本和样式。有关详细信息,请参阅WordPress中的调试。(此消息是在版本3.3.0中添加的。)在/home/sites/my\\u site/public\\u html/wp中包含/functions。php在线4773

注意:wp\\u register\\u脚本调用不正确。在wp\\u enqueue\\u脚本、admin\\u enqueue\\u脚本或login\\u enqueue\\u脚本挂钩之前,不应注册或排队脚本和样式。有关详细信息,请参阅WordPress中的调试。(此消息是在版本3.3.0中添加的。)在/home/sites/my\\u site/public\\u html/wp中包含/functions。php在线4773

注意:wp\\u enqueue\\u脚本调用不正确。在wp\\u enqueue\\u脚本、admin\\u enqueue\\u脚本或login\\u enqueue\\u脚本挂钩之前,不应注册或排队脚本和样式。有关详细信息,请参阅WordPress中的调试。(此消息是在版本3.3.0中添加的。)在/home/sites/my\\u site/public\\u html/wp中包含/functions。php在线4773

注意:wp\\u enqueue\\u style的调用不正确。在wp\\u enqueue\\u脚本、admin\\u enqueue\\u脚本或login\\u enqueue\\u脚本挂钩之前,不应注册或排队脚本和样式。有关详细信息,请参阅WordPress中的调试。(此消息是在版本3.3.0中添加的。)在/home/sites/my\\u site/public\\u html/wp中包含/functions。php在线4773

注意:未定义的偏移量:0 in/home/sites/my\\u site/public\\html/wp includes/plugin。php在线914

注意:未定义的偏移量:0 in/home/sites/my\\u site/public\\html/wp includes/plugin。php在线933

警告:call\\u user\\u func\\u array()要求参数1是有效的回调,在/home/sites/my\\u site/public\\u html/wp includes/class wp hook中没有给定数组或字符串。php在线286

看到这些错误,我立即转到插件的代码来处理注册css/js:

主插件文件。php(略读)

function fad_css_js()
{
    # add css
    wp_register_style(\'front_css\', plugins_url(\'skin/css/front.css\', __FILE__));

    # register css
    wp_enqueue_style(\'front_css\');
}

# actions
add_action(\'init\', \'fad_css_js\');
管理插件文件。php(略读)

function adn_css_js()
{
    # css
    wp_register_style(\'adn-css\', plugins_url(\'skin/css/admin.css\', __FILE__));
    wp_enqueue_style(\'adn-css\');

    # js
    wp_register_script(\'adn-js\', plugins_url(\'skin/js/admin.js\', __FILE__), array(), false, true);
    wp_enqueue_script(\'adn-js\');
}

add_action(\'admin_enqueue_scripts\', adn_css_js());
正如我所说,这在我的本地主机和开发服务器上起到了作用。投入生产似乎会带来所有这些错误,它(代码)看起来并没有错,我在任何排队之前都会注册,所以我真的不确定。

转到WP站点上的调试页面没有帮助。。

如何调试/解决此问题?

Edit

可以确认使用以下css/js代码的不同插件:

function my_other_js_css()
{
    # add css
    wp_register_style(\'my_other__css\', plugins_url(\'css/main.css\', __FILE__));
    wp_register_style(\'my_other_media_css\', plugins_url(\'css/media.css\', __FILE__));

    # add js
    wp_register_script(\'my_other_js\', plugins_url(\'js/main.js\', __FILE__), array(), false, true);

    # register css
    wp_enqueue_style(\'my_other_css\');
    wp_enqueue_style(\'my_other_media_css\');

    # register js
    wp_enqueue_script(\'my_other_js\');
}

add_action(\'plugins_loaded\', array(\'the_plugin\', \'get_instance\'));
add_action(\'init\', \'my_other_js_css\');

2 个回复
最合适的回答,由SO网友:treyBake 整理而成

以下是错误所在:

add_action(\'admin_enqueue_scripts\', adn_css_js());
theadn_css_js() 必须是\'adn_css_js\':

add_action(\'admin_enqueue_scripts\', \'adn_css_js\');

SO网友:Tom J Nowell

警告不言而喻:

注意:wp\\u register\\u style的调用不正确。在wp\\u enqueue\\u脚本、admin\\u enqueue\\u脚本或login\\u enqueue\\u脚本挂钩之前,不应注册或排队脚本和样式。

你必须打电话wp_register_style 在正确的挂钩上:

  • wp_enqueue_scripts 对于前端admin_enqueue_scripts 对于后端login_enqueue_scripts 对于登录页面wp_register_script 在任何其他钩子上,或者根本没有钩子,都是不正确的,并且将生成该警告。这是因为除非在这3个钩子上调用它,否则函数可能无法按预期工作,脚本可能无法排队或注册。要么因为注册太迟,要么因为注册太早

    此外,您还可以使用wp_enqueue_script 并传递所有参数。wp_register_script 可能有用,但并不总是必要的

    至于为什么它出现在生产环境中而不是本地,这些是PHP警告,您的本地环境可能被配置为只显示错误,而不是警告/通知。我建议将所有内容记录到错误日志中并进行检查。查询监视器之类的插件也可以帮助显示警告和通知。

相关推荐