Reputation: 57
I have WordPress 3.9 running on local (MampPro) and below a portion of functions.php containing the code to load jquery and other js in the footer. The problem is that I am getting jquery to be loaded twice. One in the header and one in the footer. I am a bit confused to figure out why!
<?php
/**
* Enqueue JS - http://eamann.com/tech/dont-dequeue-wordpress-jquery/
*/
function zero_script() {
if (!is_admin()) {
wp_deregister_script('jquery');
//wp_register_script('modernizr', get_template_directory_uri() . '/dist/js/lib/modernizr- 2.7.0.min.js', array(), null, false);
wp_register_script('main_js', get_template_directory_uri() . '/dist/js/main.min.js', array('jquery'), '', true);
//wp_enqueue_script('modernizr');
wp_enqueue_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true );
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'main_js' );
}
}
add_action('wp_enqueue_scripts', 'zero_script'); // initiate the function
Upvotes: 2
Views: 1673
Reputation: 57
**SOLVED***
I am building a WP Theme from scratch and the only plugin installed is "iThemes Security" with checked the option:
"Enqueue a safe version of jQuery"
Remove the existing jQuery version used and replace it with a safe version (the version that comes default with WordPress).
It was burried in all the options...I have unchecked that option and now I have jquery called once, in the footer. The First jquery call (in head was called by IThemes and the second in the footer from me) I did some amend to the file so it is more clear what is happening:
<?php
/**
* Enqueue JS - http://eamann.com/tech/dont-dequeue-wordpress-jquery/
*/
function zero_script() {
if (!is_admin()) {
//Call Modernizr
//wp_register_script('modernizr', get_template_directory_uri() . '/dist/js/lib/modernizr-custom.min.js', array(), null, false);
//wp_enqueue_script('modernizr');
//Call JQuery
wp_deregister_script('jquery');
wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true);
wp_enqueue_script( 'jquery' );
//Call Custom js file
wp_register_script('main_js', get_template_directory_uri() . '/dist/js/main.min.js', array('jquery'), '', true);
wp_enqueue_script( 'main_js' );
}
}
add_action('wp_enqueue_scripts', 'zero_script'); // Initiate the function
Upvotes: 3
Reputation: 5937
you are calling it twice.............
wp_enqueue_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true );
wp_enqueue_script( 'jquery' );
you just need
wp_enqueue_script( 'jquery' );
as wordpress has jquery ready to be used :)
Upvotes: 1
Reputation: 1276
Try taking out wp_enqueue_script( 'jquery' );
EDIT: try changing
wp_enqueue_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true );
to
wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true );
and keep
wp_enqueue_script( 'jquery' );
Okay EDIT2:
wp_deregister_script('jquery');
wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true );
wp_register_script('main_js', get_template_directory_uri() . '/dist/js/main.min.js', array('jquery'), '', true);
wp_enqueue_script( 'main_js' );
Edit:3
function zero_script() {
wp_deregister_script('jquery');
wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', '', '', true );
if (!is_admin()) {
wp_register_script('main_js', get_template_directory_uri() . '/dist/js/main.min.js', array('jquery'), '', true);
wp_enqueue_script( 'main_js' );
}
}
Upvotes: 1