@@ -745,10 +745,10 @@ public function __construct( $theme_json = array( 'version' => WP_Theme_JSON_Gut
745
745
}
746
746
747
747
$ this ->theme_json = WP_Theme_JSON_Schema_Gutenberg::migrate ( $ theme_json , $ origin );
748
- $ registry = WP_Block_Type_Registry:: get_instance ();
749
- $ valid_block_names = array_keys ( $ registry -> get_all_registered () );
748
+ $ blocks_metadata = static :: get_blocks_metadata ();
749
+ $ valid_block_names = array_keys ( $ blocks_metadata );
750
750
$ valid_element_names = array_keys ( static ::ELEMENTS );
751
- $ valid_variations = static ::get_valid_block_style_variations ();
751
+ $ valid_variations = static ::get_valid_block_style_variations ( $ blocks_metadata );
752
752
$ this ->theme_json = static ::unwrap_shared_block_style_variations ( $ this ->theme_json , $ valid_variations );
753
753
$ this ->theme_json = static ::sanitize ( $ this ->theme_json , $ valid_block_names , $ valid_element_names , $ valid_variations );
754
754
$ this ->theme_json = static ::maybe_opt_in_into_settings ( $ this ->theme_json );
@@ -3506,9 +3506,10 @@ public static function remove_insecure_properties( $theme_json, $origin = 'theme
3506
3506
3507
3507
$ theme_json = WP_Theme_JSON_Schema_Gutenberg::migrate ( $ theme_json , $ origin );
3508
3508
3509
- $ valid_block_names = array_keys ( static ::get_blocks_metadata () );
3509
+ $ blocks_metadata = static ::get_blocks_metadata ();
3510
+ $ valid_block_names = array_keys ( $ blocks_metadata );
3510
3511
$ valid_element_names = array_keys ( static ::ELEMENTS );
3511
- $ valid_variations = static ::get_valid_block_style_variations ();
3512
+ $ valid_variations = static ::get_valid_block_style_variations ( $ blocks_metadata );
3512
3513
3513
3514
$ theme_json = static ::sanitize ( $ theme_json , $ valid_block_names , $ valid_element_names , $ valid_variations );
3514
3515
@@ -4511,11 +4512,16 @@ function ( $matches ) use ( $variation_class ) {
4511
4512
/**
4512
4513
* Collects valid block style variations keyed by block type.
4513
4514
*
4515
+ * @since 6.6.0
4516
+ * @since 6.8.0 Added the `$blocks_metadata` parameter.
4517
+ *
4518
+ * @param array $blocks_metadata Optional. List of metadata per block. Default is the metadata for all blocks.
4514
4519
* @return array Valid block style variations by block type.
4515
4520
*/
4516
- protected static function get_valid_block_style_variations () {
4521
+ protected static function get_valid_block_style_variations ( $ blocks_metadata = array () ) {
4517
4522
$ valid_variations = array ();
4518
- foreach ( self ::get_blocks_metadata () as $ block_name => $ block_meta ) {
4523
+ $ blocks_metadata = empty ( $ blocks_metadata ) ? static ::get_blocks_metadata () : $ blocks_metadata ;
4524
+ foreach ( $ blocks_metadata as $ block_name => $ block_meta ) {
4519
4525
if ( ! isset ( $ block_meta ['styleVariations ' ] ) ) {
4520
4526
continue ;
4521
4527
}
0 commit comments