Skip to content

Commit

Permalink
Theme JSON: Extract util to get valid block style variations
Browse files Browse the repository at this point in the history
  • Loading branch information
aaronrobertshaw authored and ellatrix committed May 29, 2024
1 parent 5064ffc commit 76e38bb
Showing 1 changed file with 23 additions and 16 deletions.
39 changes: 23 additions & 16 deletions src/wp-includes/class-wp-theme-json.php
Original file line number Diff line number Diff line change
Expand Up @@ -731,15 +731,9 @@ public function __construct( $theme_json = array(), $origin = 'theme' ) {
$this->theme_json = WP_Theme_JSON_Schema::migrate( $theme_json );
$valid_block_names = array_keys( static::get_blocks_metadata() );
$valid_element_names = array_keys( static::ELEMENTS );
$valid_variations = array();
foreach ( self::get_blocks_metadata() as $block_name => $block_meta ) {
if ( ! isset( $block_meta['styleVariations'] ) ) {
continue;
}
$valid_variations[ $block_name ] = array_keys( $block_meta['styleVariations'] );
}
$theme_json = static::sanitize( $this->theme_json, $valid_block_names, $valid_element_names, $valid_variations );
$this->theme_json = static::maybe_opt_in_into_settings( $theme_json );
$valid_variations = static::get_valid_block_style_variations();
$theme_json = static::sanitize( $this->theme_json, $valid_block_names, $valid_element_names, $valid_variations );
$this->theme_json = static::maybe_opt_in_into_settings( $theme_json );

// Internally, presets are keyed by origin.
$nodes = static::get_setting_nodes( $this->theme_json );
Expand Down Expand Up @@ -3077,13 +3071,7 @@ public static function remove_insecure_properties( $theme_json ) {

$valid_block_names = array_keys( static::get_blocks_metadata() );
$valid_element_names = array_keys( static::ELEMENTS );
$valid_variations = array();
foreach ( self::get_blocks_metadata() as $block_name => $block_meta ) {
if ( ! isset( $block_meta['styleVariations'] ) ) {
continue;
}
$valid_variations[ $block_name ] = array_keys( $block_meta['styleVariations'] );
}
$valid_variations = static::get_valid_block_style_variations();

$theme_json = static::sanitize( $theme_json, $valid_block_names, $valid_element_names, $valid_variations );

Expand Down Expand Up @@ -4032,4 +4020,23 @@ function ( $matches ) use ( $variation_class ) {

return implode( ',', $result );
}

/**
* Collects valid block style variations keyed by block type.
*
* @since 6.6.0
*
* @return array Valid block style variations by block type.
*/
protected static function get_valid_block_style_variations() {
$valid_variations = array();
foreach ( self::get_blocks_metadata() as $block_name => $block_meta ) {
if ( ! isset( $block_meta['styleVariations'] ) ) {
continue;
}
$valid_variations[ $block_name ] = array_keys( $block_meta['styleVariations'] );
}

return $valid_variations;
}
}

0 comments on commit 76e38bb

Please sign in to comment.