This is the code im using in my functions file:
add_action('init', 'sort_out_jquery_pngfix_frontend');
function sort_out_jquery_pngfix_frontend() {
global $wp_scripts;
if(!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true);
wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true);
$wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
}
}
add_action('wp_print_scripts', 'register_theme_scripts');
function register_theme_scripts() {
if(!is_admin()) {
wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false);
wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true);
wp_enqueue_script('jquery');
wp_enqueue_script('dd_belatedpng');
wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery', 'dd_belatedpng'), '1.0', true);
}
}
I’m using $wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
to add a conditional statement to this script as per the documentation I can find on-line but its not working. The conditional code is not shown but the js file is.
Why is this not working?
From quick look at code this conditional only seems to be processed for styles and not scripts.
It is a long shot, but you might try registering the script, then adding in the conditional, and then enqueueing the script:
I don’t know that it will work, though
EDIT
Based on the related Trac ticket, it appears
$wp_scripts
doesn’t support this method.You may just need to pull the script out of the
wp_enqueue_script()
system, and echo the IE conditional-enclosed script call inside of a pluggable function hooked intowp_print_scripts
orwp_head
. It’s certainly not ideal, but if this is a single-use client Theme, then you don’t have to worry about someone else needing to deregister the script.This is the work around I had to put in place since WP doesnt support what I was trying to do
functions.php
footer.php
Just found a partial solution for this via
$is_IE
in wp-includes/vars.php!That seems to load library/focus.js on an
if IE
basis but there’s nothing in core to do any IE version conditionals for scripts. Looks like a Trac ticket on the subject has been shelved for the time being.It looks like you are putting it in the footer. Did you look at the end of the page for the JS file?
This works for scripts too. But only in one situation: If the script was
registered
first. You can’t go straight forenqueue
. You’ll have to do:register
->add_data
->enqueue
. This is both for scripts as for styles the same rule.Here is a working example for WordPress 4.2 and above.
This first example was previously answered here.
You can also use
$wp_scripts
variable like this:wp_script_add_data reference