Commit e168c47a61 for woocommerce

commit e168c47a61334cffb6450ad3b2d537430d482e4e
Author: Ahmar Zaidi <71930390+AhmarZaidi@users.noreply.github.com>
Date:   Thu Apr 24 14:36:38 2025 +0530

    Fix password-protected product layout in blockified templates shows unnecessary product title and product excerpt (#57437)

    * fix: remove password protected product title and excerpt

    * add: changelog entry

    * add: check to remove empty inner blocks

    * update: hide logic for related products pattern

    * update: test for single product template

    ---------

    Co-authored-by: Vladimir Reznichenko <kalessil@gmail.com>

diff --git a/plugins/woocommerce/changelog/fix-50391 b/plugins/woocommerce/changelog/fix-50391
new file mode 100644
index 0000000000..bb89f6e86d
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-50391
@@ -0,0 +1,4 @@
+Significance: patch
+Type: update
+
+Fixed issue where the blockified template was showing the post title and excerpt for password-protected products.
diff --git a/plugins/woocommerce/src/Blocks/Templates/SingleProductTemplate.php b/plugins/woocommerce/src/Blocks/Templates/SingleProductTemplate.php
index 839ed177e0..e1574e206e 100644
--- a/plugins/woocommerce/src/Blocks/Templates/SingleProductTemplate.php
+++ b/plugins/woocommerce/src/Blocks/Templates/SingleProductTemplate.php
@@ -141,11 +141,12 @@ class SingleProductTemplate extends AbstractTemplate {
 	private static function replace_first_single_product_template_block_with_password_form( $parsed_blocks, $is_already_replaced ) {
 		// We want to replace the first single product template block with the password form. We also want to remove all other single product template blocks.
 		// This array doesn't contains all the blocks. For example, it missing the breadcrumbs blocks: it doesn't make sense replace the breadcrumbs with the password form.
-		$single_product_template_blocks = array( 'woocommerce/product-image-gallery', 'woocommerce/product-details', 'woocommerce/add-to-cart-form', 'woocommerce/product-meta', 'woocommerce/product-rating', 'woocommerce/product-price', 'woocommerce/related-products' );
+		$single_product_template_blocks = array( 'woocommerce/product-image-gallery', 'woocommerce/product-details', 'woocommerce/add-to-cart-form', 'woocommerce/product-meta', 'woocommerce/product-rating', 'woocommerce/product-price', 'woocommerce/related-products', 'woocommerce/add-to-cart-with-options', 'woocommerce/product-gallery', 'woocommerce/blockified-product-details', 'woocommerce/product-collection', 'core/post-title', 'core/post-excerpt' );
+
 		return array_reduce(
 			$parsed_blocks,
 			function ( $carry, $block ) use ( $single_product_template_blocks ) {
-				if ( in_array( $block['blockName'], $single_product_template_blocks, true ) ) {
+				if ( in_array( $block['blockName'], $single_product_template_blocks, true ) || ( 'core/pattern' === $block['blockName'] && isset( $block['attrs']['slug'] ) && 'woocommerce-blocks/related-products' === $block['attrs']['slug'] ) ) {
 					if ( $carry['is_already_replaced'] ) {
 						return array(
 							'blocks'              => $carry['blocks'],
@@ -203,6 +204,15 @@ class SingleProductTemplate extends AbstractTemplate {
 					$block['innerBlocks']  = $new_inner_blocks;
 					$block['innerContent'] = $new_inner_contents;

+					if ( count( $new_inner_blocks ) === 0 ) {
+						return array(
+							'blocks'              => $carry['blocks'],
+							'html_block'          => null,
+							'removed'             => true,
+							'is_already_replaced' => $carry['is_already_replaced'],
+						);
+					}
+
 					return array(
 						'blocks'              => array_merge( $carry['blocks'], array( $block ) ),
 						'html_block'          => null,
diff --git a/plugins/woocommerce/tests/php/src/Blocks/Templates/SingleProductTemplateTests.php b/plugins/woocommerce/tests/php/src/Blocks/Templates/SingleProductTemplateTests.php
index 01685adfc0..168cde2264 100644
--- a/plugins/woocommerce/tests/php/src/Blocks/Templates/SingleProductTemplateTests.php
+++ b/plugins/woocommerce/tests/php/src/Blocks/Templates/SingleProductTemplateTests.php
@@ -396,12 +396,6 @@ class SingleProductTemplateTests extends WP_UnitTestCase {
 				  <!-- wp:html -->%s<!-- /wp:html -->
 				  </div>
 				  <!-- /wp:column -->
-				  <!-- wp:column -->
-				  <div class="wp-block-column">
-					 <!-- wp:post-title {"level": 1, "__woocommerceNamespace":"woocommerce/product-query/product-title"} /-->
-					 <!-- wp:post-excerpt {"__woocommerceNamespace":"woocommerce/product-query/product-summary", "excerptLength":100} /-->
-				  </div>
-				  <!-- /wp:column -->
 			   </div>
 			   <!-- /wp:columns -->
 			</div>