如何停止 WordPress 加载 jQuery 和 jQuery-migrate?
Posted
技术标签:
【中文标题】如何停止 WordPress 加载 jQuery 和 jQuery-migrate?【英文标题】:How do I stop WordPress loading jQuery and jQuery-migrate? 【发布时间】:2013-08-27 14:26:08 【问题描述】:WordPress 正在wp_head()
中加载以下 2 个文件:
<script type='text/javascript' src='http://example.com/wp-includes/js/jquery/jquery.js?ver=1.10.2'></script>
<script type='text/javascript' src='http://example.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
为了阻止这种情况的发生,我尝试停用所有插件并在 functions.php 中注销 jQuery,但似乎没有什么能摆脱它。
有什么办法可以阻止这种情况吗?
我正在使用 Wordpress v3.6。
【问题讨论】:
【参考方案1】:您可能想在您的 functions.php
中使用它
add_filter( 'wp_default_scripts', 'remove_jquery_migrate' );
function remove_jquery_migrate( &$scripts)
if(!is_admin())
$scripts->remove( 'jquery');
$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.2.1' );
1.2.1 = 最新版本的 jquery-migrate
如果您想检查您的网站是否需要 jquery-migrate,请打开 wp-config.php
和这行代码:define('SCRIPT_DEBUG', true);
。这样您就可以监控任何错误。
当您的网站上线时,不要忘记删除它!
希望对您有所帮助。
【讨论】:
嘿,谢谢你 - 它看起来不错。如果没有 jquery-migrate,如何检查是否有错误? 提交了一个编辑以删除版本号,因为维护它是不合理的,它可能会被省略。另外值得注意的是,这种方法有效,因为jquery
句柄依赖于jquery-migrate
和jquery-core
。如果后面的任何一个被重命名,或者如果添加了其他东西,这个函数将不再具有预期的效果。
我认为这个版本只是一个缓存破坏者,所以你可以把你想要的一切都放在那里【参考方案2】:
Wordpress 有 jquery 库,您应该利用它。如果你想删除它,你可以这样做:
function deregister_qjuery()
if ( !is_admin() )
wp_deregister_script('jquery');
add_action('wp_enqueue_scripts', 'deregister_qjuery');
但请考虑如何正确加载您的 JS 文件。
进一步阅读:
亲爱的主题开发者,这是您在 WordPress 主题中添加脚本的方式 http://wpcandy.com/teaches/how-to-load-scripts-in-wordpress-themes/
正确加载 jQuery http://beneverard.co.uk/blog/wordpress-loading-jquery-correctly-version-2/
如何在 Wordpress 中添加最初从 Internet 加载的备份 javascript 文件 How to add a backup javascript file in Wordpress that initially loads off internet
【讨论】:
【参考方案3】:使用 Wordpress 的 wp_enqueue_script
函数,而不是在模板中定义脚本。这样您就不会导入不同版本的 javascript 库。
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
【讨论】:
【参考方案4】:function dequeue_jquery_migrate($scripts)
if(!is_admin() && !empty($scripts->registered['jquery']))
$jquery_dependencies = $scripts->registered['jquery']->deps;
$scripts->registered['jquery']->deps=array_diff($jquery_dependencies,array('jquery-migrate'));
add_action( 'wp_default_scripts', 'dequeue_jquery_migrate' );
【讨论】:
当用全局$wp_scripts
变量替换 $scripts
变量时,这也适用于 wp_print_scripts
挂钩。以上是关于如何停止 WordPress 加载 jQuery 和 jQuery-migrate?的主要内容,如果未能解决你的问题,请参考以下文章
创建 wordpress 插件时,如何在 jQuery 加载页面中启动挂钩?
如何在 DJango 中停止页面重新加载 ajax jquery