Script Loader: Fix unintended adding of async to scripts that are printed directly with wp_print_scripts() without enqueueing them beforehand.

Props: joemcgill, westonruter, felixarntz, peterwilsoncc.
See: #58648.

git-svn-id: https://develop.svn.wordpress.org/trunk@56092 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Ozz
2023-06-28 14:14:58 +00:00
parent a63be5a890
commit 80e424ad55
2 changed files with 27 additions and 2 deletions

View File

@@ -907,9 +907,19 @@ JS;
* @return string The best eligible loading strategy.
*/
private function get_eligible_loading_strategy( $handle ) {
$eligible = $this->filter_eligible_strategies( $handle );
$intended = (string) $this->get_data( $handle, 'strategy' );
// Bail early once we know the eligible strategy is blocking.
// Bail early if there is no intended strategy.
if ( ! $intended ) {
return '';
}
// If the intended strategy is 'defer', limit the initial list of eligibles.
$initial = ( 'defer' === $intended ) ? array( 'defer' ) : null;
$eligible = $this->filter_eligible_strategies( $handle, $initial );
// Return early once we know the eligible strategy is blocking.
if ( empty( $eligible ) ) {
return '';
}

View File

@@ -2931,6 +2931,21 @@ HTML
$this->assertSame( $expected, $print_scripts );
}
/**
* Ensure tinymce scripts aren't loading async.
*
* @ticket 58648
*/
public function test_printing_tinymce_scripts() {
global $wp_scripts;
wp_register_tinymce_scripts( $wp_scripts, true );
$actual = get_echo( 'wp_print_scripts', array( array( 'wp-tinymce' ) ) );
$this->assertStringNotContainsString( 'async', $actual );
}
/**
* Parse an HTML markup fragment.
*