@@ -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