Skip to content

Commit c00ad5a

Browse files
Editor: fix custom CSS output for block style variations.
Adds custom CSS to the block style variation rules output by `get_styles_for_block` in class `WP_Theme_JSON`. Props isabel_brison, aaronrobertshaw. Fixes #61425. git-svn-id: https://develop.svn.wordpress.org/trunk@58421 602fd350-edb4-49c9-b593-d223f7449a82
1 parent fa7902c commit c00ad5a

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

src/wp-includes/class-wp-theme-json.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2647,6 +2647,7 @@ private static function get_block_nodes( $theme_json ) {
26472647
* @since 6.1.0
26482648
* @since 6.6.0 Setting a min-height of HTML when root styles have a background gradient or image.
26492649
* Updated general global styles specificity to 0-1-0.
2650+
* Fixed custom CSS output in block style variations.
26502651
*
26512652
* @param array $block_metadata Metadata about the block to get styles for.
26522653
*
@@ -2662,6 +2663,7 @@ public function get_styles_for_block( $block_metadata ) {
26622663

26632664
// If there are style variations, generate the declarations for them, including any feature selectors the block may have.
26642665
$style_variation_declarations = array();
2666+
$style_variation_custom_css = array();
26652667
if ( ! empty( $block_metadata['variations'] ) ) {
26662668
foreach ( $block_metadata['variations'] as $style_variation ) {
26672669
$style_variation_node = _wp_array_get( $this->theme_json, $style_variation['path'], array() );
@@ -2691,6 +2693,10 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) {
26912693

26922694
// Compute declarations for remaining styles not covered by feature level selectors.
26932695
$style_variation_declarations[ $style_variation['selector'] ] = static::compute_style_properties( $style_variation_node, $settings, null, $this->theme_json );
2696+
// Store custom CSS for the style variation.
2697+
if ( isset( $style_variation_node['css'] ) ) {
2698+
$style_variation_custom_css[ $style_variation['selector'] ] = $this->process_blocks_custom_css( $style_variation_node['css'], $style_variation['selector'] );
2699+
}
26942700
}
26952701
}
26962702
/*
@@ -2819,6 +2825,14 @@ static function ( $pseudo_selector ) use ( $selector ) {
28192825
// 6. Generate and append the style variation rulesets.
28202826
foreach ( $style_variation_declarations as $style_variation_selector => $individual_style_variation_declarations ) {
28212827
$block_rules .= static::to_ruleset( ":root :where($style_variation_selector)", $individual_style_variation_declarations );
2828+
if ( isset( $style_variation_custom_css[ $style_variation_selector ] ) ) {
2829+
$block_rules .= $style_variation_custom_css[ $style_variation_selector ];
2830+
}
2831+
}
2832+
2833+
// 7. Generate and append any custom CSS rules pertaining to nested block style variations.
2834+
if ( isset( $node['css'] ) && ! $is_root_selector ) {
2835+
$block_rules .= $this->process_blocks_custom_css( $node['css'], $selector );
28222836
}
28232837

28242838
return $block_rules;

0 commit comments

Comments
 (0)