我使用的是Wordpress,它有一个内置的jQuery库。当我安装一个插件时,另一个版本就进来了。我学会了写自己的代码,教程要求我安装另一个!
在写这篇文章的时候,我可能已经安装了4-5个版本的jQuery库!
它快疯了!我不认为我需要那么多,我只需要来自google CDN的最新版本以获得最佳性能,所以我在php文件中放入了这一行,但即使我清除了缓存,它似乎也没有出现在任何地方。
function mytheme_jquery_enqueue(){
if(!is_admin()){
wp_deregister_script('jquery');
wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js", false, null);
wp_enqueue_script('jquery');
}
}
add_action('wp_enqueue_scripts', 'mytheme_jquery_enqueue');
我如何修复它,并摆脱所有其他不必要的版本?
发布于 2013-02-10 05:32:47
首先,试着给你的钩子一个较低的优先级,例如:
add_action( 'wp_enqueue_scripts', 'mytheme_jquery_enqueue', 99999 );
这样,它将是最新运行的,除非某些插件的优先级为9999999
... it's a horse race...
然后,Enqueuing jQuery in plug-ins
如果你的代码(或主题的代码)取消注册jQuery,然后从另一个位置(谷歌)重新注册它,你需要在某个地方添加以下内容:
jQuery.noConflict();
这使得jQuery与试图全局定义$ variable的其他脚本(即Prototype)协作。WordPress在他们的版本中捆绑了这一行,而谷歌没有。
但是,比起自己排队CDN,我们推荐使用这个插件:Use Google Libraries。根据一位核心开发者的说法:
请不要使用该方法来包含来自谷歌的jQuery脚本。上述方法不起作用,并且会导致与其他脚本的冲突,以及其他问题。如果您想使用Google托管版本的库,请使用"Use Google Libraries“插件。这个插件做得很好,并且经常更新。上面的方法只会在表面上起作用,它会导致最终的问题。- Otto Jul 29 '12 at 15:57
然后,我们有一个问题,那就是加载其他jQuery库并使用与WordPress捆绑在一起的库实际上是。在这种情况下,您应该使用remove_action
、wp_deregister_script
或wp_dequeue_script
来阻止所有这些插件或主题加载它们的版本。
Don’t Dequeue WordPress’ jQuery
作为WordPress Stack Exchange的版主,我花了很多时间在这个网站上。我看到了很多很棒的问题,很多不太好的问题,还有几个你在开玩笑的问题。但我最常看到的问题让我很沮丧:
如何移除WordPress的jQuery,改用谷歌的CDN版本?我毫不费力地说,如果你问这个问题,你从一开始就没有理由建立一个网站。
https://stackoverflow.com/questions/14790049
复制相似问题