From 6d6f51422e4106a3ac2d50c94a8d2601ceae6d00 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Thu, 13 Jun 2024 16:34:10 +1000 Subject: [PATCH 1/3] Fix block style variation custom CSS output on the front end --- src/wp-includes/class-wp-theme-json.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index 4547da40b097d..2b6e9bf21eaf1 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -2690,6 +2690,10 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) { // Compute declarations for remaining styles not covered by feature level selectors. $style_variation_declarations[ $style_variation['selector'] ] = static::compute_style_properties( $style_variation_node, $settings, null, $this->theme_json ); + // Store custom CSS for the style variation. + if ( isset( $style_variation_node['css'] ) ) { + $style_variation_custom_css[ $style_variation['selector'] ] = $this->process_blocks_custom_css( $style_variation_node['css'], $style_variation['selector'] ); + } } } /* @@ -2818,6 +2822,9 @@ static function ( $pseudo_selector ) use ( $selector ) { // 6. Generate and append the style variation rulesets. foreach ( $style_variation_declarations as $style_variation_selector => $individual_style_variation_declarations ) { $block_rules .= static::to_ruleset( ":root :where($style_variation_selector)", $individual_style_variation_declarations ); + if ( isset( $style_variation_custom_css[ $style_variation_selector ] ) ) { + $block_rules .= $style_variation_custom_css[ $style_variation_selector ]; + } } return $block_rules; From 857e4a8ff5c30a77946da5173362a96960c0635b Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 17 Jun 2024 11:53:36 +1000 Subject: [PATCH 2/3] Output custom CSS for nested block style variations. --- src/wp-includes/class-wp-theme-json.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index 2b6e9bf21eaf1..15545168e1ddd 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -2661,6 +2661,7 @@ public function get_styles_for_block( $block_metadata ) { // If there are style variations, generate the declarations for them, including any feature selectors the block may have. $style_variation_declarations = array(); + $style_variation_custom_css = array(); if ( ! empty( $block_metadata['variations'] ) ) { foreach ( $block_metadata['variations'] as $style_variation ) { $style_variation_node = _wp_array_get( $this->theme_json, $style_variation['path'], array() ); @@ -2827,6 +2828,11 @@ static function ( $pseudo_selector ) use ( $selector ) { } } + // 7. Generate and append any custom CSS rules pertaining to nested block style variations. + if ( isset( $node['css'] ) && ! $is_root_selector ) { + $block_rules .= $this->process_blocks_custom_css( $node['css'], $selector ); + } + return $block_rules; } From a81d355c89af27e5ca8e46bfdd68b7ada6089f90 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 17 Jun 2024 12:26:48 +1000 Subject: [PATCH 3/3] Add since comment --- src/wp-includes/class-wp-theme-json.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/wp-includes/class-wp-theme-json.php b/src/wp-includes/class-wp-theme-json.php index 15545168e1ddd..c00ffdf9ba261 100644 --- a/src/wp-includes/class-wp-theme-json.php +++ b/src/wp-includes/class-wp-theme-json.php @@ -2646,6 +2646,7 @@ private static function get_block_nodes( $theme_json ) { * @since 6.1.0 * @since 6.6.0 Setting a min-height of HTML when root styles have a background gradient or image. * Updated general global styles specificity to 0-1-0. + * Fixed custom CSS output in block style variations. * * @param array $block_metadata Metadata about the block to get styles for. *