如何停止 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-migratejquery-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 加载页面中启动挂钩?

Wooslider:未定义 jQuery

如何在 DJango 中停止页面重新加载 ajax jquery

如何将此 jQuery 脚本添加到我的 Wordpress

移除 WordPress 自动加载的 jQuery,使用自定义 jQuery 版本

Jquery有条件地加载到wordpress页面上