Commit 91257d4f4d for woocommerce

commit 91257d4f4d5d99dee2bc7252cc38029b54dbcdd1
Author: Tung Du <dinhtungdu@gmail.com>
Date:   Thu Nov 27 13:31:31 2025 +0700

    Product image: avoid unnecessary calculations (#62107)

    * fix: only check for valid image when image id is provided

    * Add changefile(s) from automation for the following project(s): woocommerce

    * fix: avoid duplicated calucation for target image id

    ---------

    Co-authored-by: github-actions <github-actions@github.com>

diff --git a/plugins/woocommerce/changelog/62107-wooplug-5855-category-archive-performance-on-block-based-themes-with b/plugins/woocommerce/changelog/62107-wooplug-5855-category-archive-performance-on-block-based-themes-with
new file mode 100644
index 0000000000..917f89a3d5
--- /dev/null
+++ b/plugins/woocommerce/changelog/62107-wooplug-5855-category-archive-performance-on-block-based-themes-with
@@ -0,0 +1,4 @@
+Significance: patch
+Type: performance
+
+Optimize ProductImage block to avoid unnecessary gallery image calculations.
\ No newline at end of file
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/ProductImage.php b/plugins/woocommerce/src/Blocks/BlockTypes/ProductImage.php
index 4acf1224ea..e28350ea64 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/ProductImage.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/ProductImage.php
@@ -161,9 +161,13 @@ class ProductImage extends AbstractBlock {
 		}

 		$featured_image_id          = (int) $product->get_image_id();
-		$gallery_image_ids          = ProductGalleryUtils::get_all_image_ids( $product );
-		$available_image_ids        = array_merge( [ $featured_image_id ], $gallery_image_ids );
-		$provided_image_id_is_valid = $image_id && in_array( $image_id, $available_image_ids, true );
+		$provided_image_id_is_valid = false;
+
+		if ( $image_id ) {
+			$gallery_image_ids          = ProductGalleryUtils::get_all_image_ids( $product );
+			$available_image_ids        = array_merge( [ $featured_image_id ], $gallery_image_ids );
+			$provided_image_id_is_valid = in_array( $image_id, $available_image_ids, true );
+		}

 		$target_image_id = $provided_image_id_is_valid ? $image_id : $featured_image_id;

@@ -176,7 +180,7 @@ class ProductImage extends AbstractBlock {
 		$attr = array(
 			'alt'           => empty( $alt_text ) ? $product->get_title() : $alt_text,
 			'data-testid'   => 'product-image',
-			'data-image-id' => $provided_image_id_is_valid ? $image_id : $featured_image_id,
+			'data-image-id' => $target_image_id,
 			'style'         => $image_style,
 		);