如何从我的 WordPress 前端删除 jquery?

Posted

技术标签:

【中文标题】如何从我的 WordPress 前端删除 jquery?【英文标题】:How can I remove jquery from the frontside of my WordPress? 【发布时间】:2010-11-12 13:16:56 【问题描述】:

我的 wordpress 网站下载起来有点重。在前端,它不必要地包含 jquery。在我的萤火虫中,它看起来像:

jquery.js?ver=1.3.2

jquery.form.js?ver=2.02m

我不需要为我包括这些。

我很高兴他们留在 wp-admin 中,但我希望他们不要加载到前端。

我在wp-includes/script-loader.php 中找到了我认为正在加载它们的文件,但我不确定要取消注释或如何将其完全删除。

有没有办法做到这一点,在不破坏后端的情况下删除 jquery?

【问题讨论】:

【参考方案1】:

您的主题可能正在添加 JQuery。如果您的主题添加正确,它应该使用wp_enqueue_script() 函数。要删除 JQuery,只需使用 wp_deregister_script() 函数。

wp_deregister_script('jquery');

为您的整个站点删除 JQuery 可能会对您的管理部分造成一些意想不到的后果。为避免在您的管理页面上删除 JQuery,请改用以下代码:

if ( !is_admin() ) wp_deregister_script('jquery');

现在只有不是管理页面的页面才会运行wp_deregister_script() 函数。

将此代码添加到主题目录中的functions.php文件中。

【讨论】:

这已经过时了。请在下面查看我的解决方案。 是的。不再起作用了。 deweydb 的回答是正确的。 但它也删除了插件的js 我不确定,文档也是 wp_deregister_script 或 wp_dequeue_script 的作用。 WordPress 一团糟。【参考方案2】:

完全删除样式或脚本的正确方法是将其出列注销它。您还应该注意,前端脚本是通过 wp_enqueue_scripts 挂钩处理的,而后端脚本是通过 admin_enqueue_scripts 挂钩处理的。

因此,考虑到这一点,您可以执行以下操作

add_filter( 'wp_enqueue_scripts', 'change_default_jquery', PHP_INT_MAX );

function change_default_jquery( )
    wp_dequeue_script( 'jquery');
    wp_deregister_script( 'jquery');   

编辑 1

这已在 Wordpress 4.0 版上进行了全面测试,并按预期工作。

编辑 2

作为概念证明,将以下代码粘贴到您的functions.php 中。这将在您的网站头部、后端和前端打印成功或失败消息

add_action( 'wp_head', 'check_jquery' );
add_action( 'admin_head', 'check_jquery' );
function check_jquery() 

    global $wp_scripts;

    foreach ( $wp_scripts->registered as $wp_script ) 
        $handles[] = $wp_script->handle; 
    

    if( in_array( 'jquery', $handles ) ) 
        echo 'jquery has been loaded';
    else
        echo 'jquery has been removed';
    

【讨论】:

它还删除了所有插件的js 2017 年 6 月:我将此答案的一部分放入插件中:github.com/jonathanbell/remove-jquery-wordpress-plugin 我为 WP 制作了一个开源插件,其中有很多设置来管理 WP 上的 jQuery:github.com/Remzi1993/wp-jquery-manager 我很困惑。两个函数调用来删除一个脚本?【参考方案3】:

从 wordpress 3.6 开始,所有其他解决方案现在都已过时

add_filter( 'wp_default_scripts', 'change_default_jquery' );

function change_default_jquery( &$scripts)
    if(!is_admin())
        $scripts->remove( 'jquery');
        $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
    

【讨论】:

终于!谢谢。 这仍然是 5.0 的最佳方式吗?【参考方案4】:

Wordpress 通过一个名为 <?php wp_head(); ?> 的模板标签添加这个 jQuery 调用,该标签出现在大多数主题中,并且是某些插件工作所必需的。

这可能很烦人,不仅因为加载,还因为它可能会杀死以前加载的 jQuery,甚至可能会妨碍一些尝试加载 jQuery 的插件。

快速修复方法是打开主题目录中的文件 header.php,并添加:

<?php wp_deregister_script('jquery'); ?>

就在

之前
<?php wp_head(); ?>

或者只是将它们组合成:

<?php wp_deregister_script('jquery'); wp_head(); ?>

可以在here找到更技术性的解释

【讨论】:

【参考方案5】:
function my_init() 
    if (!is_admin()) 
        wp_deregister_script('jquery');
        wp_register_script('jquery', false);
    

add_action('init', 'my_init');

这是正确的 - 删除 jquery 库 js。其他答案中的代码会删除所有 js(甚至是您安装的插件添加的 js)

在 4.3.1 上测试

【讨论】:

【参考方案6】:

查看您的主题文件。

wp-content/themes/header.php

可能包含 .js 文件。

【讨论】:

【参考方案7】:

WordPress 5 及以上版本(已测试

删除默认 jquery 并从文件夹或 CDN 添加您的 jquery。只使用一个,'local' 或 'cdn'

// Remove the WordPress default jquery
wp_deregister_script( 'jquery' );

// using a local file
wp_enqueue_script(
  'jquery', get_template_directory_uri() . '/lib/jquery-3.3.1.min.js','', '3.3.1', true
);

// using CDN
wp_enqueue_script(
    'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', '', '3.3.1', true
);

// $handle: 'jquery'
// $src: 
    // local: get_template_directory_uri() . '/lib/jquery-3.3.1.min.js'
    // cdn: '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
// $deps: '' (leave it empty)
// $ver: '3.3.1'
// $in_footer: true (boolean)

语法

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

【讨论】:

【参考方案8】:

查看渲染页面的来源;当在 header.php 中调用&lt;?php wp_head(); ?&gt; 时,Wordpress 通常默认包含 jQuery,因此您仍然可以看到 jQuery 包含在您的站点中。

如果您删除 header.php 中的 &lt;?php wp_head(); ?&gt;,您可能会失去其他插件功能,因为此时许多插件“挂钩”到 Wordpress。

但是包括 jQuery 并不是什么大不了的事。它很小,Wordpress 在某些方面依赖它。

【讨论】:

【参考方案9】:

在大多数 Wordpress 主题中。管理面板上使用的 jQuery (wp-admin) 或产品页面中使用的 jQuery。加快。这会奏效。在 WP 5.0 上测试 仅当管理员登录或其产品页面时才加载 jQuery(用户登录或不在产品页面上都无关紧要。(产品页面上的 jQuery 加载))

function my_jquery_remove() 
    if ( ! is_admin() && !is_product() ) 
       wp_deregister_script('jquery');
       wp_register_script('jquery', false);
    

add_action('init', 'my_jquery_remove');

【讨论】:

【参考方案10】:

如果您使用的是缩小版,jQuery.js 只有 15KB,如果您使用的是不需要它的主题,则完全没有这些。

您可能应该寻找一个没有 jQuery 的轻量级主题,而不是破解它,然后看到主题在几个地方中断,因为他们正在寻找那些 js 文件。

【讨论】:

jQuery.js 大约是那个大小,如果你使用缩小版并且你使用 GZip 压缩数据。 jQuery.form.js 是 22K 未压缩和未缩小的。 15KB 与 22KB 不会有明显差异,我认为。【参考方案11】:

通过取消注册 jQuery,我能够将“事件”页面加载速度缩短 2.2 秒。 jQuery 是一个不错的选择,但在我看来,页面速度非常重要。

你永远不会让用户停留超过 5 秒,所以如果 jQuery 导致你出现性能问题,那么我说摆脱。

【讨论】:

同意。将所有内容构建为不需要它,并仅在必须时使用它。秒是一个巨大的交易。不仅仅是下载,还有处理时间。

以上是关于如何从我的 WordPress 前端删除 jquery?的主要内容,如果未能解决你的问题,请参考以下文章

我需要从我的 Wordpress 博客中删除档案。?.?

从我的 .csv URL 列表中删除 Wordpress Post

我需要从我的 wordpress 媒体库中删除重复的图像

Wordpress:如何删除默认 Wordpress 日历上的存档链接

从 WordPress 中删除所有评论数据

如何从我的 Angular 前端服务中查询用户?