Changeset 61122
- Timestamp:
- 11/04/2025 07:53:24 AM (4 weeks ago)
- Location:
- trunk
- Files:
-
- 2 edited
-
src/wp-includes/script-loader.php (modified) (2 diffs)
-
tests/phpunit/tests/template.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/script-loader.php
r61121 r61122 3578 3578 * 3579 3579 * @since 6.9.0 3580 * 3581 * @see _add_default_theme_supports() 3580 3582 */ 3581 3583 function wp_load_classic_theme_block_styles_on_demand() { 3584 // This is not relevant to block themes, as they are opted in to loading separate styles on demand via _add_default_theme_supports(). 3582 3585 if ( wp_is_block_theme() ) { 3583 3586 return; … … 3591 3594 add_filter( 'wp_should_output_buffer_template_for_enhancement', '__return_true', 0 ); 3592 3595 3596 // If a site has opted out of the template enhancement output buffer, then bail. 3593 3597 if ( ! wp_should_output_buffer_template_for_enhancement() ) { 3594 3598 return; 3595 3599 } 3596 3600 3601 // The following two filters are added by default for block themes in _add_default_theme_supports(). 3602 3597 3603 /* 3598 * If the theme supports block styles, add filters to ensure they are loaded separately and on demand. Without this, 3599 * if a theme does not want or support block styles, then enabling these filters can result in undesired separate 3600 * block-specific styles being enqueued, though a theme may also be trying to nullify the wp-block-library 3601 * stylesheet. 3602 */ 3603 if ( current_theme_supports( 'wp-block-styles' ) ) { 3604 /* 3605 * Load separate block styles so that the large block-library stylesheet is not enqueued unconditionally, 3606 * and so that block-specific styles will only be enqueued when they are used on the page. 3607 */ 3608 add_filter( 'should_load_separate_core_block_assets', '__return_true', 0 ); 3609 3610 // Also ensure that block assets are loaded on demand (although the default value is from should_load_separate_core_block_assets). 3611 add_filter( 'should_load_block_assets_on_demand', '__return_true', 0 ); 3604 * Load separate block styles so that the large block-library stylesheet is not enqueued unconditionally, 3605 * and so that block-specific styles will only be enqueued when they are used on the page. 3606 * A priority of zero allows for this to be easily overridden by themes which wish to opt out. 3607 */ 3608 add_filter( 'should_load_separate_core_block_assets', '__return_true', 0 ); 3609 3610 /* 3611 * Also ensure that block assets are loaded on demand (although the default value is from should_load_separate_core_block_assets). 3612 * As above, a priority of zero allows for this to be easily overridden by themes which wish to opt out. 3613 */ 3614 add_filter( 'should_load_block_assets_on_demand', '__return_true', 0 ); 3615 3616 // If a site has explicitly opted out of loading block styles on demand via filters with priorities higher than above, then abort. 3617 if ( ! wp_should_load_separate_core_block_assets() || ! wp_should_load_block_assets_on_demand() ) { 3618 return; 3612 3619 } 3613 3620 -
trunk/tests/phpunit/tests/template.php
r61120 r61122 1394 1394 public function data_wp_load_classic_theme_block_styles_on_demand(): array { 1395 1395 return array( 1396 'block_theme' => array(1396 'block_theme' => array( 1397 1397 'theme' => 'block-theme', 1398 1398 'set_up' => static function () {}, 1399 'expected_on_demand' => false, 1399 'expected_load_separate' => true, 1400 'expected_on_demand' => true, 1400 1401 'expected_buffer_started' => false, 1401 1402 ), 1402 'classic_theme_with_output_buffer_blocked' => array(1403 'classic_theme_with_output_buffer_blocked' => array( 1403 1404 'theme' => 'default', 1404 1405 'set_up' => static function () { 1405 1406 add_filter( 'wp_should_output_buffer_template_for_enhancement', '__return_false' ); 1406 1407 }, 1408 'expected_load_separate' => false, 1407 1409 'expected_on_demand' => false, 1408 1410 'expected_buffer_started' => false, 1409 1411 ), 1410 'classic_theme_with_ block_styles_support'=> array(1412 'classic_theme_with_should_load_separate_core_block_assets_opt_out' => array( 1411 1413 'theme' => 'default', 1412 1414 'set_up' => static function () { 1413 add_theme_support( 'wp-block-styles' ); 1414 }, 1415 add_filter( 'should_load_separate_core_block_assets', '__return_false' ); 1416 }, 1417 'expected_load_separate' => false, 1418 'expected_on_demand' => true, 1419 'expected_buffer_started' => false, 1420 ), 1421 'classic_theme_with_should_load_block_assets_on_demand_out_out' => array( 1422 'theme' => 'default', 1423 'set_up' => static function () { 1424 add_filter( 'should_load_block_assets_on_demand', '__return_false' ); 1425 }, 1426 'expected_load_separate' => true, 1427 'expected_on_demand' => false, 1428 'expected_buffer_started' => false, 1429 ), 1430 'classic_theme_without_any_opt_out' => array( 1431 'theme' => 'default', 1432 'set_up' => static function () {}, 1433 'expected_load_separate' => true, 1415 1434 'expected_on_demand' => true, 1416 1435 'expected_buffer_started' => true, 1417 1436 ), 1418 'classic_theme_without_block_styles_support' => array(1419 'theme' => 'default',1420 'set_up' => static function () {1421 remove_theme_support( 'wp-block-styles' );1422 },1423 'expected_on_demand' => false,1424 'expected_buffer_started' => true,1425 ),1426 1437 ); 1427 1438 } … … 1437 1448 * @dataProvider data_wp_load_classic_theme_block_styles_on_demand 1438 1449 */ 1439 public function test_wp_load_classic_theme_block_styles_on_demand( string $theme, ?Closure $set_up, bool $expected_ on_demand, bool $expected_buffer_started ) {1450 public function test_wp_load_classic_theme_block_styles_on_demand( string $theme, ?Closure $set_up, bool $expected_load_separate, bool $expected_on_demand, bool $expected_buffer_started ) { 1440 1451 $this->assertFalse( wp_should_load_separate_core_block_assets(), 'Expected wp_should_load_separate_core_block_assets() to return false initially.' ); 1441 1452 $this->assertFalse( wp_should_load_block_assets_on_demand(), 'Expected wp_should_load_block_assets_on_demand() to return true' ); … … 1448 1459 1449 1460 wp_load_classic_theme_block_styles_on_demand(); 1450 1451 $this->assertSame( $expected_on_demand, wp_should_load_separate_core_block_assets(), 'Expected wp_should_load_separate_core_block_assets() return value.' ); 1461 _add_default_theme_supports(); 1462 1463 $this->assertSame( $expected_load_separate, wp_should_load_separate_core_block_assets(), 'Expected wp_should_load_separate_core_block_assets() return value.' ); 1452 1464 $this->assertSame( $expected_on_demand, wp_should_load_block_assets_on_demand(), 'Expected wp_should_load_block_assets_on_demand() return value.' ); 1453 1465 $this->assertSame( $expected_buffer_started, (bool) has_action( 'wp_template_enhancement_output_buffer_started', 'wp_hoist_late_printed_styles' ), 'Expected wp_template_enhancement_output_buffer_started action added status.' );
Note: See TracChangeset
for help on using the changeset viewer.