Skip to content

Instantly share code, notes, and snippets.

@alinademi
Forked from wpscholar/defer-async-scripts.php
Created January 29, 2021 01:46
Show Gist options
  • Save alinademi/28dbe75d939204814f7f5afac2849d32 to your computer and use it in GitHub Desktop.
Save alinademi/28dbe75d939204814f7f5afac2849d32 to your computer and use it in GitHub Desktop.
Class that allows you to async and defer scripts in WordPress by adding data.
<?php
class WP_Scholar_Defer_Scripts {
public static function initialize() {
add_filter( 'script_loader_tag', array( __CLASS__, 'defer_scripts' ), 10, 2 );
add_filter( 'script_loader_tag', array( __CLASS__, 'async_scripts' ), 10, 2 );
}
public static function defer_scripts( $tag, $handle ) {
if ( wp_scripts()->get_data( $handle, 'defer' ) ) {
$tag = str_replace( '></', ' defer></', $tag );
}
return $tag;
}
public static function async_scripts( $tag, $handle ) {
if ( wp_scripts()->get_data( $handle, 'async' ) ) {
$tag = str_replace( '></', ' async></', $tag );
}
return $tag;
}
}
<?php
add_action( 'login_enqueue_scripts', function () {
global $wp_scripts;
wp_enqueue_script( 'recaptcha', 'https://www.google.com/recaptcha/api.js' );
$wp_scripts->add_data( 'recaptcha', 'async', true );
$wp_scripts->add_data( 'recaptcha', 'defer', true );
} );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment