Skip to content

Instantly share code, notes, and snippets.

@weszty
Forked from wpscholar/defer-async-scripts.php
Created December 4, 2021 12:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save weszty/937c97cf742b6f02076d32a208aed198 to your computer and use it in GitHub Desktop.
Save weszty/937c97cf742b6f02076d32a208aed198 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