wp_enqueue_script被错误地调用


20

我不知道如何,但是现在我遇到了这个错误:

注意:wp_enqueue_style被错误地调用。在wp_enqueue_scripts,admin_enqueue_scripts或login_enqueue_scripts钩子之前,不应注册或排队脚本和样式。请参阅WordPress中的调试以获取更多信息。(此消息是在版本3.3中添加的。)第3049行的wp-includes / functions.php中

注意:wp_enqueue_script被错误地调用。在wp_enqueue_scripts,admin_enqueue_scripts或login_enqueue_scripts钩子之前,不应注册或排队脚本和样式。请参阅WordPress中的调试以获取更多信息。(此消息是在版本3.3中添加的。)第3049行的wp-includes / functions.php中

警告:无法修改标头信息-行415上wp-login.php中已经发送过的标头(输出始于wp-includes / functions.php:3049)

警告:无法修改标头信息-行427上wp-login.php中已经发送过的标头(输出从wp-includes / functions.php:3049开始)

这是我尝试登录时得到的...在其他站点上,我只有两个第一个错误。我尝试修复它,但不能。有什么建议么?


1
Notice小号似乎相当自我解释。您尝试了什么,没有奏效?
s_ha_dum 2014年

@s_ha_dum我已经尝试了许多我在Google上发现的东西...刚才toscho的解决方案对我有用,我可以登录到管理面板,但是我看到的是加载样式出了点问题,因为字体是与以前不一样。我不断收到此错误消息:
突袭2014年

Answers:


15

禁用所有插件并切换到默认主题。现在应该消失了。

然后逐步启用每个插件,直到问题再次出现。现在您知道了源代码,比如说一个插件。

该插件调用可能wp_enqueue_script为时过早。查找该函数的所有出现,然后确保它们绑定到特定的操作:

  • wp_register_script() 应该采取行动 wp_loaded
  • wp_enqueue_script 在其中一项行动上
    • wp_enqueue_scripts
    • admin_enqueue_scripts
    • customize_controls_enqueue_scripts 要么
    • login_enqueue_scripts(有关后者,请参见此线程)。

问题是我无法登录,因为我也收到了Cookie的奇怪错误。错误说,我已经阻止了浏览器中的cookie,但是我没有阻止它们。。。太奇怪了,因为我今天所做的一切都是在style.css中添加了几行,一切都很好,但是我遇到这些错误几个小时后。
雷登2014年

@raiden然后通过FTP重命名您的插件目录,对当前活动的主题执行相同的操作。
fuxia

现在,我可以登录我的面板了……谢谢!但是现在我又收到一个错误警告:无法修改标头信息-行头已由发送的标头(输出始于wp-includes / functions.php:3049)在896行的wp-includes / pluggable.php中
raiden

4

基于Gregory Schultz的解决方案:

将所有脚本和样式包装在一个函数中,然后将该函数挂接到目标enqueue动作。👇

function my_admin_scripts() {
  wp_enqueue_style( 'admin-css', get_stylesheet_directory_uri() . '/admin/css/admin.css' );
  wp_enqueue_script( 'admin-js', get_stylesheet_directory_uri() . '/admin/js/admin.js', true );
}
add_action( 'admin_enqueue_scripts', 'my_admin_scripts' );

wp_enqueue_scripts - 前端

admin_enqueue_scripts —管理页面

login_enqueue_scripts —登录页面


2

发生这种情况的原因是因为这些函数是直接从functions.php文件中调用的,而不使用函数。找出functions.php中的哪些行不在这样的函数中,然后添加它们。

日期选择器示例:

-而不是在functions.php中:

wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_style('jquery-ui-css', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
wp_enqueue_style('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');

-我们添加这个

    //我们定义函数:
    函数MYTHEME_scripts(){
    wp_enqueue_script('jquery-ui-datepicker');
    }

    //将功能添加到WP加载列表。
    add_action('wp_enqueue_scripts','MYTHEME_scripts');

    函数MYTHEME_styles(){
    wp_enqueue_style('jquery-ui-css','//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
    wp_enqueue_style('jquery-ui-css','//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
    }

    //将功能添加到WP加载列表。
    add_action('wp_enqueue_style','MYTHEME_styles');

希望能奏效


1

这意味着有3个“端点”,wp_enqueue_script()其前端为wp_enqueue_scripts,登录屏幕为login_enqueue_scripts,管理仪表板为admin_enqueue_scripts。检查此链接

您收到此错误的原因wp_enqueue_script()是调用不当。


我了解其中的内容,但不知道如何(实现?)此“解决方法:改用wp_enqueue_scripts”。
雷登2014年

这意味着您只需要使用即可wp_enqueue_scriptswp_print_styles但我怀疑这与您的情况有关。这只是故障排除的一个示例。在您的情况下,插件或主题中的某些功能会被滥用,wp_enqueue_script()因此您会收到此错误……我的猜测。
JMau 2014年

我发现Notice: wp_register_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or login_enqueue_scripts hooks.我将所有脚本和样式都包装在一个函数中,通知消失了。
格雷戈里·舒尔茨

除此之外,我没有任何错误
格雷戈里·舒尔茨

1

您可以使用Query Monitor插件来缩小此错误的来源,而不必一个接一个地禁用所有插件或修改代码库以进行调试。

当您在控制台中看到此错误消息时:

wp_register_style被错误地调用。在wp_enqueue_scripts,admin_enqueue_scripts或login_enqueue_scripts钩子之前,不应注册或排队脚本和样式。请参阅WordPress中的调试以获取更多信息。(此消息是在3.3.0版中添加的。)

最后一列(Component)将告诉您触发错误的插件。从那里在该插件(或主题)中进行搜索以查找并修补该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.