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.