将本地jQuery替换为外部托管时出现WordPress错误

时间:2019-02-26 作者:geochanto

我试图从CDN加载jquery,而不是用wordpress本机加载。在我的功能中。php我已经完成了如下操作,确保它只发生在前端:

function replace_jquery() {
    if (!is_admin()) {
        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery2\', \'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\');
        wp_enqueue_script(\'jquery2\');
    }
}
add_action(\'init\', \'replace_jquery\');
尽管如此,当我尝试登录管理区域时,我会遇到一系列错误,首先是:

Notice: wp_deregister_script was called <strong>incorrectly</strong>. 
Do not deregister the <code>jquery</code> script in the administration area. 
To target the front-end theme, use the <code>wp_enqueue_scripts</code> hook. 
Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information. 
(This message was added in version 3.6.0.) in /app/public/wp-includes/functions.php on line 4204
有时它不会抛出此错误,有时也会抛出此错误。我做错了什么?

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

错误消息非常清楚地描述了您的问题:

注意:调用了wp\\u deregister\\u脚本incorrectly. 请勿注销jquery 管理区域中的脚本。要针对前端主题,请使用wp_enqueue_scripts

您正在上注销脚本init 挂钩:

add_action(\'init\', \'replace_jquery\');
这个钩子用于后端和前端,但调试器不够聪明,无法知道您正在使用! is_admin() 函数内部。无论如何,您应该只执行错误建议的操作,并使用wp_enqueue_scripts 挂钩:

add_action(\'wp_enqueue_scripts\', \'replace_jquery\');
原始脚本尚未在上排队init 钩子,因此尝试在该钩子上取消注册它不会起作用,因为它只会在wp_enqueue_scripts 吊钩运行。

此外,您这样做可能会导致问题,原因有二:

您将jQuery 3.3.1排队,但WordPress使用的是1.12.4。这意味着WordPress本身和绝大多数插件都希望加载1.12.4,但会加载3.3.1。编写的代码应为1。X不一定与3兼容。十、 这可能会导致插件崩溃jquery2. 这意味着任何声明jquery 因为依赖项不会加载。这将破坏大量插件

SO网友:brothman01

尝试wp_dequeue_script( \'jquery-ui-core\' ); 而不是wp_deregister_script(). 理论上,它的工作效率可能较低,但另一种方式根本不起作用。

相关推荐

How jQuery Works in Wordpress

总之,我有一个流媒体网站,我想用jQuery做一个切换按钮来切换到黑暗/光明模式。请查看我的代码,我的代码有什么问题,bcz这对我不适用。在页脚中。php(在正文上方)<div class=\"gelap-terang\"></div> <script> jQuery.noConflict(); jQuery(document).ready(function(){ jQuery(\".gelap-terang\").hi