From c9f04d40532809e1e06d7c04d4dd6623c095edff Mon Sep 17 00:00:00 2001 From: Isabel Brison Date: Tue, 23 Jan 2024 05:36:40 +0000 Subject: [PATCH] Editor: fix classname output on blocks without layout. Prevents layout classnames from being output on blocks with no layout support and no child layout classnames by returning early from `wp_render_layout_support_flag`. Props andrewserong. Fixes #60292. git-svn-id: https://develop.svn.wordpress.org/trunk@57328 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-supports/layout.php | 3 +++ tests/phpunit/tests/block-supports/layout.php | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/wp-includes/block-supports/layout.php b/src/wp-includes/block-supports/layout.php index 67d6a3f1b7..4da4f24b23 100644 --- a/src/wp-includes/block-supports/layout.php +++ b/src/wp-includes/block-supports/layout.php @@ -615,6 +615,9 @@ function wp_render_layout_support_flag( $block_content, $block ) { $processor->add_class( $class_name ); } return $processor->get_updated_html(); + } elseif ( ! $block_supports_layout ) { + // Ensure layout classnames are not injected if there is no layout support. + return $block_content; } $global_settings = wp_get_global_settings(); diff --git a/tests/phpunit/tests/block-supports/layout.php b/tests/phpunit/tests/block-supports/layout.php index 379c10fe2b..a5f67f50f9 100644 --- a/tests/phpunit/tests/block-supports/layout.php +++ b/tests/phpunit/tests/block-supports/layout.php @@ -171,6 +171,7 @@ class Test_Block_Supports_Layout extends WP_UnitTestCase { /** * @ticket 57584 * @ticket 58548 + * @ticket 60292 * * @dataProvider data_layout_support_flag_renders_classnames_on_wrapper * @@ -250,6 +251,25 @@ class Test_Block_Supports_Layout extends WP_UnitTestCase { ), 'expected_output' => '
', ), + 'skip classname output if block does not support layout and there are no child layout classes to be output' => array( + 'args' => array( + 'block_content' => '

A paragraph

', + 'block' => array( + 'blockName' => 'core/paragraph', + 'attrs' => array( + 'style' => array( + 'layout' => array( + 'selfStretch' => 'fit', + ), + ), + ), + 'innerBlocks' => array(), + 'innerHTML' => '

A paragraph

', + 'innerContent' => array( '

A paragraph

' ), + ), + ), + 'expected_output' => '

A paragraph

', + ), ); }