How do I stop WordPress loading jQuery and jQuery-migrate?
Asked Answered
A

4

12

WordPress is loading the following 2 files in wp_head():

<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>

In an attempt to stop this from happening, I have tried deactivating all plugins and deregistering jQuery in functions.php, but nothing seems to get rid of it.

Any ideas how I can stop this?

I'm using Wordpress v3.6.

Aspergillosis answered 24/8, 2013 at 17:44 Comment(0)
H
11

You might want to use this in your 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 = latest version of jquery-migrate

If you want to check whether your site requires jquery-migrate, open wp-config.php and this line of code: define('SCRIPT_DEBUG', true);. That way you can monitor any errors. Don't forget to remove this when you put your site live!

Hope that helps.

Hoiden answered 22/9, 2014 at 14:58 Comment(3)
Hey, thanks for this - it looks good. How do you inspect whether you have error without jquery-migrate?Phrenetic
Submitted an edit to remove the version number as it's not reasonable to maintain that and it may be omitted. Also worth noting this approach works because the jquery handle has dependencies on jquery-migrate and jquery-core. If either of the later are renamed, or if something else is added, this function will no longer have the desired effect.Ninnette
I think the version is only a cache buster, so you can put everything you want thereEstradiol
H
3

Use the wp_enqueue_script function of Wordpress instead of defining the scripts in your template. This way you won't import different versions of javascript libraries.

http://codex.wordpress.org/Function_Reference/wp_enqueue_script

Heyes answered 24/8, 2013 at 18:41 Comment(0)
W
3

Wordpress has the jquery library and you should take advantage of this. If you want to remove this you can do something like this:

function deregister_qjuery() {  
    if ( !is_admin() ) {
        wp_deregister_script('jquery');
    }
}  

add_action('wp_enqueue_scripts', 'deregister_qjuery'); 

But consider how to load your JS files properly.

Further reading:

Dear theme developers, this is how you add scripts in WordPress themes http://wpcandy.com/teaches/how-to-load-scripts-in-wordpress-themes/

Loading jQuery correctly http://beneverard.co.uk/blog/wordpress-loading-jquery-correctly-version-2/

How to add a backup javascript file in Wordpress that initially loads off internet How to add a backup javascript file in Wordpress that initially loads off internet

Wheelock answered 17/12, 2013 at 1:4 Comment(0)
B
1
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' );
Broaddus answered 28/3, 2018 at 8:45 Comment(1)
This also works from within the wp_print_scripts hook when replacing the $scripts variable with the global $wp_scripts variable.Lonnielonny

© 2022 - 2024 — McMap. All rights reserved.