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,
);