如何从WordPress的前端删除jquery?

wil*_*fun 31 wordpress jquery

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

jquery.js?ver=1.3.2
Run Code Online (Sandbox Code Playgroud)

jquery.form.js?ver=2.02m
Run Code Online (Sandbox Code Playgroud)

我不需要将这些包括在内.

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

我找到了我认为正在加载它们的文件,wp-includes/script-loader.php但是我不确定要取消注释或者要做什么来彻底删除它.

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

dew*_*ydb 34

截至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' );
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这适用于WP 4.1。谢谢 :) (2认同)

Ner*_*mer 33

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

wp_deregister_script('jquery');
Run Code Online (Sandbox Code Playgroud)

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

if ( !is_admin() ) wp_deregister_script('jquery');
Run Code Online (Sandbox Code Playgroud)

现在只有非管理页面的页面才能运行该wp_deregister_script()功能.

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

  • 这已经过时了.请参阅下面的解决方案. (2认同)

Pie*_*sen 27

完全删除样式或脚本的正确方法是将其出列取消注册.您还应注意,前端脚本是通过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');   
}
Run Code Online (Sandbox Code Playgroud)

编辑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';
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

WordPress通过一个名为的模板标签添加了jQuery调用,该模板标签<?php wp_head(); ?>出现在大多数主题中,对于某些插件而言,这是必需的。

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

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

<?php wp_deregister_script('jquery'); ?>
Run Code Online (Sandbox Code Playgroud)

就在之前

<?php wp_head(); ?>
Run Code Online (Sandbox Code Playgroud)

或者只是将它们合并为:

<?php wp_deregister_script('jquery'); wp_head(); ?>
Run Code Online (Sandbox Code Playgroud)

可以在这里找到更多技术说明