How can I remove jquery from the frontside of my WordPress?

前端 未结 10 831
逝去的感伤
逝去的感伤 2020-12-29 02:33

My wordpress site is a bit heavy to download. On the frontend, its including jquery unnecessarily. In my firebug it looks like:

jquery.js?ver=1.3.2


        
相关标签:
10条回答
  • 2020-12-29 02:44

    Look into your theme files.

    wp-content/themes/header.php

    may include the .js files.

    0 讨论(0)
  • 2020-12-29 02:46

    I was able to shave 2.2 seconds off my "Events" page load speed by de-registering jQuery. jQuery is a nice to have but in my opinion page speed is so much more important.

    You'll never have a user hang around for more than 5 seconds so if jQuery is causing you performance problems, then I say get rid.

    0 讨论(0)
  • 2020-12-29 02:51

    Wordpress adds this jQuery call via a template tag named <?php wp_head(); ?>, which appears in most themes, and is necessary for some plugins to work.

    It could be annoying, not only because of loading, but because it might kill previously loaded jQuery, and might even get in the way of some plugins who try to load jQuery as well.

    The quick fix is openning up the file header.php in your theme's directory, and adding:

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

    right before

    <?php wp_head(); ?>
    

    Or just combine them both into:

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

    A more technical explanation could be found here

    0 讨论(0)
  • 2020-12-29 02:52

    The correct method to completely remove a style or script is to dequeue it and deregister it. You should also note that front end scripts are handled through the wp_enqueue_scripts hook while back end scripts are handled through the admin_enqueue_scripts hook.

    So with that in mind, you can do the following

    add_filter( 'wp_enqueue_scripts', 'change_default_jquery', PHP_INT_MAX );
    
    function change_default_jquery( ){
        wp_dequeue_script( 'jquery');
        wp_deregister_script( 'jquery');   
    }
    

    EDIT 1

    This has been fully tested on Wordpress version 4.0 and working as expected.

    EDIT 2

    As proof of concept, paste the following code in your functions.php. This will print a success or failure message in the head of your site, back end and front end

    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';
        }
    }
    
    0 讨论(0)
  • 2020-12-29 02:53

    WordPress 5 and above (Tested)

    Remove the default jquery and add your jquery from folder or from CDN. Use only one, 'local' or '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)
    

    Syntax

    wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
    
    0 讨论(0)
  • 2020-12-29 02:59
    function my_init() {
        if (!is_admin()) {
            wp_deregister_script('jquery');
            wp_register_script('jquery', false);
        }
    }
    add_action('init', 'my_init');
    

    It's correct - removes jquery library js. Code from other answers removes all js (even js that your installed plugins adds)

    Tested on 4.3.1

    0 讨论(0)
提交回复
热议问题