Commit c254a3c717b for woocommerce

commit c254a3c717ba3b3aaf4de7e0b45584c8351bbfed
Author: Alba Rincón <albarin@users.noreply.github.com>
Date:   Mon Mar 30 09:39:10 2026 +0200

    Add cache priming to grouped product templates and download permissions (#63797)

    * Add cache priming to grouped product structured data, add-to-cart template, and download permissions adjuster
    * Add changefile(s) from automation for the following project(s): woocommerce
    * Add changefile(s) from automation for the following project(s): woocommerce
    * Add cache priming to grouped product structured data, add-to-cart template, and download permissions adjuster
    * Code review tweaks.

    ---------

    Co-authored-by: woocommercebot <woocommercebot@users.noreply.github.com>
    Co-authored-by: Vladimir Reznichenko <kalessil@gmail.com>

diff --git a/plugins/woocommerce/changelog/63797-add-cache-priming-misc-2 b/plugins/woocommerce/changelog/63797-add-cache-priming-misc-2
new file mode 100644
index 00000000000..c0f6b536750
--- /dev/null
+++ b/plugins/woocommerce/changelog/63797-add-cache-priming-misc-2
@@ -0,0 +1,4 @@
+Significance: patch
+Type: performance
+
+Add missing `_prime_post_caches()` calls in grouped product structured data, grouped product add-to-cart template, and download permissions adjuster to batch-load child product data to reduce individual database queries.
\ No newline at end of file
diff --git a/plugins/woocommerce/includes/class-wc-structured-data.php b/plugins/woocommerce/includes/class-wc-structured-data.php
index dcdcbeeda96..b5f79e4d1e4 100644
--- a/plugins/woocommerce/includes/class-wc-structured-data.php
+++ b/plugins/woocommerce/includes/class-wc-structured-data.php
@@ -288,8 +288,10 @@ class WC_Structured_Data {
 				}
 			} elseif ( $product->is_type( ProductType::GROUPED ) ) {
 				$tax_display_mode = get_option( 'woocommerce_tax_display_shop' );
-				$children         = array_filter( array_map( 'wc_get_product', $product->get_children() ), 'wc_products_array_filter_visible_grouped' );
-				$price_function   = 'incl' === $tax_display_mode ? 'wc_get_price_including_tax' : 'wc_get_price_excluding_tax';
+				$child_ids        = $product->get_children();
+				_prime_post_caches( $child_ids );
+				$children       = array_filter( array_map( 'wc_get_product', $child_ids ), 'wc_products_array_filter_visible_grouped' );
+				$price_function = 'incl' === $tax_display_mode ? 'wc_get_price_including_tax' : 'wc_get_price_excluding_tax';

 				foreach ( $children as $child ) {
 					if ( '' !== $child->get_regular_price() ) {
diff --git a/plugins/woocommerce/includes/wc-template-functions.php b/plugins/woocommerce/includes/wc-template-functions.php
index 078c50a1f23..905b4a4cc27 100644
--- a/plugins/woocommerce/includes/wc-template-functions.php
+++ b/plugins/woocommerce/includes/wc-template-functions.php
@@ -2029,7 +2029,9 @@ if ( ! function_exists( 'woocommerce_grouped_add_to_cart' ) ) {
 			return;
 		}

-		$products = array_filter( array_map( 'wc_get_product', $product->get_children() ), 'wc_products_array_filter_visible_grouped' );
+		$child_ids = $product->get_children();
+		_prime_post_caches( $child_ids );
+		$products = array_filter( array_map( 'wc_get_product', $child_ids ), 'wc_products_array_filter_visible_grouped' );

 		if ( $products ) {
 			wc_get_template(
diff --git a/plugins/woocommerce/src/Internal/DownloadPermissionsAdjuster.php b/plugins/woocommerce/src/Internal/DownloadPermissionsAdjuster.php
index dc489c745b6..4b212c807d5 100644
--- a/plugins/woocommerce/src/Internal/DownloadPermissionsAdjuster.php
+++ b/plugins/woocommerce/src/Internal/DownloadPermissionsAdjuster.php
@@ -44,6 +44,8 @@ class DownloadPermissionsAdjuster {
 			return;
 		}

+		_prime_post_caches( $children_ids );
+
 		$are_any_children_downloadable = false;
 		foreach ( $children_ids as $child_id ) {
 			$child = wc_get_product( $child_id );
@@ -111,6 +113,8 @@ class DownloadPermissionsAdjuster {
 			return;
 		}

+		_prime_post_caches( $children_ids );
+
 		$children_with_downloads = array();
 		foreach ( $children_ids as $child_id ) {
 			$child = wc_get_product( $child_id );