Commit 399badfcdf for woocommerce
commit 399badfcdf9d40730d184bbdc6abe0aa7163ba31
Author: Alba Rincón <albarin@users.noreply.github.com>
Date: Fri Feb 13 09:35:10 2026 +0100
Avoid extra queries in group product pages by priming post caches (#63267)
* Avoid extra queries in WC_Product_Grouped::is_on_sale() by priming post caches
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: woocommercebot <woocommercebot@users.noreply.github.com>
diff --git a/plugins/woocommerce/changelog/63267-fix-grouped-product-is-on-sale-query-optimization b/plugins/woocommerce/changelog/63267-fix-grouped-product-is-on-sale-query-optimization
new file mode 100644
index 0000000000..ea5a4747b9
--- /dev/null
+++ b/plugins/woocommerce/changelog/63267-fix-grouped-product-is-on-sale-query-optimization
@@ -0,0 +1,4 @@
+Significance: minor
+Type: performance
+
+Avoid extra queries in group product pages by priming the post cache.
\ No newline at end of file
diff --git a/plugins/woocommerce/includes/class-wc-product-grouped.php b/plugins/woocommerce/includes/class-wc-product-grouped.php
index 33357ff3eb..254637d43e 100644
--- a/plugins/woocommerce/includes/class-wc-product-grouped.php
+++ b/plugins/woocommerce/includes/class-wc-product-grouped.php
@@ -62,7 +62,9 @@ class WC_Product_Grouped extends WC_Product {
* @return bool
*/
public function is_on_sale( $context = 'view' ) {
- $children = array_filter( array_map( 'wc_get_product', $this->get_children( $context ) ), 'wc_products_array_filter_visible_grouped' );
+ $child_ids = $this->get_children( $context );
+ _prime_post_caches( $child_ids );
+ $children = array_filter( array_map( 'wc_get_product', $child_ids ), 'wc_products_array_filter_visible_grouped' );
$on_sale = false;
foreach ( $children as $child ) {