Commit 4beb8304f5 for wordpress.org

commit 4beb8304f5289321b5df4408d1e1c79b4e964c3b
Author: ramonopoly <ramonopoly@git.wordpress.org>
Date:   Tue Sep 8 00:48:51 2026 +0000

    Themes: restore layout styles for block style variations with a block gap

    This commit passes a style variation's "block" to `get_layout_styles()` so the block support check passes.

    It fixes a bug where a block style variation that declared `spacing.blockGap` silently produced no CSS.

    The cause was due to running the layout block support check against a variation node, which is not a registered block and cannot be used to check for layout support.

    Developed in: https://github.com/WordPress/wordpress-develop/pull/13398

    Props kimjiwoon, ramonopoly.

    Fixes #66044.


    Built from https://develop.svn.wordpress.org/trunk@63523


    git-svn-id: http://core.svn.wordpress.org/trunk@62699 1a063a9b-81f0-0310-95a4-ce76da25c4cd

diff --git a/wp-includes/class-wp-theme-json.php b/wp-includes/class-wp-theme-json.php
index ae6bcff379..c721e42b85 100644
--- a/wp-includes/class-wp-theme-json.php
+++ b/wp-includes/class-wp-theme-json.php
@@ -3894,8 +3894,18 @@ class WP_Theme_JSON {
 				// Only store if the variation has blockGap defined.
 				if ( isset( $style_variation_node['spacing']['blockGap'] ) ) {
 					// Append block selector to the variation selector for proper targeting.
-					$variation_metadata_with_selector                                = $style_variation;
-					$variation_metadata_with_selector['selector']                    = $style_variation['selector'] . $block_metadata['css'];
+					$variation_metadata_with_selector             = $style_variation;
+					$variation_metadata_with_selector['selector'] = $style_variation['selector'] . $block_metadata['css'];
+
+					/*
+					 * `get_layout_styles()` reads `name` as a block name, to check that the block
+					 * supports layout at all. A variation node's `name` is the variation slug,
+					 * which is never a registered block, so the check fails and every variation
+					 * gap rule is discarded. Pass the block the variation belongs to, so the
+					 * support check answers the question it is actually asking.
+					 */
+					$variation_metadata_with_selector['name'] = $block_name;
+
 					$style_variation_layout_metadata[ $style_variation['selector'] ] = array(
 						'metadata' => $variation_metadata_with_selector,
 						'node'     => $style_variation_node,
@@ -3951,7 +3961,11 @@ class WP_Theme_JSON {
 					if ( isset( $breakpoint_node['spacing']['blockGap'] ) ) {
 						$variation_layout_metadata             = $style_variation;
 						$variation_layout_metadata['selector'] = $style_variation['selector'] . $block_metadata['css'];
-						$variation_responsive_css             .= $this->get_layout_styles(
+
+						// The variation slug is not a block name here either. See above.
+						$variation_layout_metadata['name'] = $block_name;
+
+						$variation_responsive_css .= $this->get_layout_styles(
 							$variation_layout_metadata,
 							array(
 								'node'        => $breakpoint_node,
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 8a1c40f6b0..3afaf21e26 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
  *
  * @global string $wp_version
  */
-$wp_version = '7.2-alpha-63522';
+$wp_version = '7.2-alpha-63523';

 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.