- Timestamp:
- 10/27/2023 07:02:54 PM (14 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/block-patterns.php
r56978 r57021 329 329 */ 330 330 function _register_theme_block_patterns() { 331 332 /* 333 * During the bootstrap process, a check for active and valid themes is run. 334 * If no themes are returned, the theme's functions.php file will not be loaded, 335 * which can lead to errors if patterns expect some variables or constants to 336 * already be set at this point, so bail early if that is the case. 337 */ 338 if ( empty( wp_get_active_and_valid_themes() ) ) { 339 return; 340 } 341 331 342 /* 332 343 * Register patterns for the active theme. If the theme is a child theme, -
trunk/tests/phpunit/tests/blocks/wpBlockPatternsRegistry.php
r56960 r57021 483 483 $this->assertTrue( $result ); 484 484 } 485 486 /** 487 * Ensures theme patterns are registered on init. 488 * 489 * @ticket 59723 490 * 491 * @covers ::_register_theme_block_patterns 492 */ 493 public function test_register_theme_block_patterns_on_init() { 494 // This test needs to use access static class properties. 495 $registry = WP_Block_Patterns_Registry::get_instance(); 496 497 // Ensure we're using a theme with patterns. 498 switch_theme( 'twentytwentythree' ); 499 500 $theme = wp_get_theme(); 501 $theme_patterns = array_values( wp_list_pluck( $theme->get_block_patterns(), 'slug' ) ); 502 503 // This helper is fired on the init hook. 504 _register_theme_block_patterns(); 505 506 $registered = wp_list_pluck( $registry->get_all_registered(), 'name' ); 507 508 // Cleanup patterns registry. 509 foreach ( $theme_patterns as $pattern ) { 510 $registry->unregister( $pattern ); 511 } 512 513 $this->assertSameSets( $theme_patterns, array_intersect( $theme_patterns, $registered ), 'Could not confirm theme patterns were registered.' ); 514 } 515 516 /** 517 * Ensures theme patterns are not registered when no themes are active and valid. 518 * 519 * @ticket 59723 520 * 521 * @covers ::_register_theme_block_patterns 522 */ 523 public function test_register_theme_block_patterns_on_init_skipped_during_install() { 524 // This test needs to use access static class properties. 525 $registry = WP_Block_Patterns_Registry::get_instance(); 526 527 // Ensure we're using a theme with patterns. 528 switch_theme( 'twentytwentythree' ); 529 530 $theme = wp_get_theme(); 531 $theme_patterns = array_values( wp_list_pluck( $theme->get_block_patterns(), 'slug' ) ); 532 533 /* 534 * This will short-circuit theme activation. 535 * @see wp_get_active_and_valid_themes(). 536 */ 537 wp_installing( true ); 538 539 // This helper is fired on the init hook. 540 _register_theme_block_patterns(); 541 542 $registered = wp_list_pluck( $registry->get_all_registered(), 'name' ); 543 544 // Cleanup. 545 wp_installing( false ); 546 547 $this->assertEmpty( array_intersect( $theme_patterns, $registered ), 'Theme patterns were were incorrectly registered.' ); 548 } 485 549 }
Note: See TracChangeset
for help on using the changeset viewer.