mircobabini
5/18/2015 - 8:15 AM

Wordpress: how to enqueue js/css from CDN, the right way

Wordpress: how to enqueue js/css from CDN, the right way

<?php
function wp_enqueue_cdn( $name, $get_the_url, $callback, $fallback ){
	$transient_name = $name.'_is_up';

	if( get_transient( $transient_name ) ){
	    $load_source = $callback;
	}else{
	    $cdn_response = wp_remote_get( $get_the_url );
	    if( is_wp_error( $cdn_response ) || wp_remote_retrieve_response_code( $cdn_response ) != '200' ){
	        $load_source = $fallback;
	    }else{
	        set_transient( $transient_name, true, MINUTE_IN_SECONDS * 20 );
	        $load_source = $callback;
	    }
	}

	add_action('wp_enqueue_scripts', $load_source );
}

/* usage */
wp_enqueue_cdn( 'scrollto', 'http://cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/2.1.0/jquery.scrollTo.min.js', 'load_external_scrollto', 'load_local_scrollto' );