mirror of
https://github.com/WordPress/WordPress.git
synced 2024-09-12 15:48:34 +02:00
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see 932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* Javascript Loader Class
|
|
*
|
|
* Allow `async` and `defer` while enqueuing Javascript.
|
|
*
|
|
* Based on a solution in WP Rig.
|
|
*
|
|
* @package WordPress
|
|
* @subpackage Twenty_Twenty
|
|
* @since 1.0.0
|
|
*/
|
|
|
|
if ( ! class_exists( 'TwentyTwenty_Script_Loader' ) ) {
|
|
/**
|
|
* A class that provides a way to add `async` or `defer` attributes to scripts.
|
|
*/
|
|
class TwentyTwenty_Script_Loader {
|
|
|
|
/**
|
|
* Adds async/defer attributes to enqueued / registered scripts.
|
|
*
|
|
* If #12009 lands in WordPress, this function can no-op since it would be handled in core.
|
|
*
|
|
* @link https://core.trac.wordpress.org/ticket/12009
|
|
*
|
|
* @param string $tag The script tag.
|
|
* @param string $handle The script handle.
|
|
* @return string Script HTML string.
|
|
*/
|
|
public function filter_script_loader_tag( $tag, $handle ) {
|
|
foreach ( [ 'async', 'defer' ] as $attr ) {
|
|
if ( ! wp_scripts()->get_data( $handle, $attr ) ) {
|
|
continue;
|
|
}
|
|
// Prevent adding attribute when already added in #12009.
|
|
if ( ! preg_match( ":\s$attr(=|>|\s):", $tag ) ) {
|
|
$tag = preg_replace( ':(?=></script>):', " $attr", $tag, 1 );
|
|
}
|
|
// Only allow async or defer, not both.
|
|
break;
|
|
}
|
|
return $tag;
|
|
}
|
|
|
|
}
|
|
}
|