admin_url( 'admin-ajax.php' ) ) );
register_setting( 'aj_options', 'aj_enabled' );
register_setting( 'aj_options', 'aj_method' );
register_setting( 'aj_options', 'aj_exclusions' );
register_setting( 'aj_options', 'autoptimize_enabled' );
}
/**
* async_javascript_menu()
*
* register admin menu
*
* @param n/a
* @return n/a
*/
add_action( 'admin_notices', 'async_javascript_upgrade_notice' );
function async_javascript_upgrade_notice() {
$aj_upgrade_notice = get_option( 'aj_upgrade_notice' );
if ( $aj_upgrade_notice != AJ_VERSION ) {
echo '
';
}
}
/**
* async_javascript_menu()
*
* register admin menu
*
* @param n/a
* @return n/a
*/
add_action('admin_menu','async_javascript_menu');
function async_javascript_menu() {
add_menu_page('Async Javascript Admin','Async Javascript','manage_options','async-javascript','async_javascript_admin');
}
/**
* async_javascript_admin()
*
* admin page
*
* @param n/a
* @return n/a
*/
function async_javascript_admin() {
// Display settings saved message if optioned updated
if( isset($_GET['settings-updated']) && $_GET['settings-updated'] == 'true' ) {
echo '';
}
// load settings from database
$aj_enabled = (get_option('aj_enabled') == 1) ? array(true,'checked','') : array(false,'','style="display:none;"');
$aj_method = (get_option('aj_method') != 'async') ? 'defer' : 'async';
$aj_exclusions = get_option('aj_exclusions');
$autoptimize_enabled = (get_option('autoptimize_enabled') == 1) ? 'checked' : '';
?>
Async Javascript Settings
' tasks called via wp_enqueue_script using the 'clean_url' filter
*
* @param string $url url being processed
* @return string $url modified url string
*/
add_filter('clean_url','async_js',11);
function async_js($url) {
$aj_enabled = (get_option('aj_enabled') == 1) ? true : false;
$aj_method = (get_option('aj_method') != 'async') ? 'defer' : 'async';
$aj_exclusions = get_option('aj_exclusions');
$array_exclusions = !empty($aj_exclusions) ? explode(',',$aj_exclusions) : $aj_exclusions;
if (false !== $aj_enabled && false === is_admin()) {
if (false === strpos($url,'.js')) {
return $url;
}
if (is_array($array_exclusions) && !empty($array_exclusions)) {
foreach ($array_exclusions as $exclusion) {
if (false !== strpos(strtolower($url),strtolower($exclusion))) {
return $url;
}
}
}
return $url . "' " . $aj_method . "='" . $aj_method;
}
return $url;
} // end async_js()
/**
* my_autoptimize_defer()
*
* Adds support for Autoptimize plugin. Adds 'async' attribute to '