如何从WordPress的前端删除jquery?

时间:2009-07-21 06:15:59

标签: jquery wordpress

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

jquery.js?ver=1.3.2

jquery.form.js?ver=2.02m

我不需要将这些内容包含在内。

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

我发现我认为这个文件正在加载wp-includes/script-loader.php,但我不知道该取消注释该怎么办,或者该怎么办才能完全删除它。

有没有办法做到这一点,删除jquery而不破坏后端?

11 个答案:

答案 0 :(得分:31)

您的主题可能正在添加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文件中。

答案 1 :(得分:31)

自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' );
    }
}

答案 2 :(得分:22)

完全删除样式或脚本的正确方法是将其取消取消注册。您还应注意,前端脚本是通过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';
    }
}

答案 3 :(得分:5)

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

答案 4 :(得分:3)

查看您的主题文件。

  

可湿性粉剂内容/主题/ header.php文件

可能包含.js文件。

答案 5 :(得分:2)

如果你使用缩小版本,jQuery.js只有15KB,如果你使用的是不需要它的主题,那么这些将完全不存在。

你应该寻找一个没有jQuery的轻量级主题,而不是黑客攻击,然后在几个地方看到主题,因为他们正在寻找那些js文件。

答案 6 :(得分:2)

查看已呈现页面的来源;在header.php中调用<?php wp_head(); ?>时,Wordpress通常默认包含jQuery,因此您可以查看网站中包含的jQuery。

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

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

答案 7 :(得分:1)

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上测试

答案 8 :(得分:0)

通过取消注册jQuery,我能够将我的“事件”页面加载速度缩短2.2秒。 jQuery是一个很好的,但在我看来,页面速度是如此重要。

你永远不会有一个用户闲逛超过5秒,所以如果jQuery导致你的性能问题,那么我说要摆脱。

答案 9 :(得分:0)

WordPress 5及更高版本(已测试

删除默认的jquery,然后从文件夹或CDN添加jquery。仅使用一个“本地”或“ 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 );

答案 10 :(得分:0)

在大多数 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');