Commit 4f5392cf55 for woocommerce

commit 4f5392cf5510e122cd75abe6c4d176a764a22c5b
Author: Vladimir Reznichenko <kalessil@gmail.com>
Date:   Wed Feb 18 08:40:06 2026 +0100

    [Performance] Products: reduce the number of SQLs required to populate cart data in StoreApi (#63319)

    Added caches priming for upsell products in cart data endpoint by StoreApi.

diff --git a/plugins/woocommerce/changelog/performance-63118-reduce-sqls-number-iteration-3 b/plugins/woocommerce/changelog/performance-63118-reduce-sqls-number-iteration-3
new file mode 100644
index 0000000000..a4c20af0b7
--- /dev/null
+++ b/plugins/woocommerce/changelog/performance-63118-reduce-sqls-number-iteration-3
@@ -0,0 +1,4 @@
+Significance: patch
+Type: performance
+
+Products: reduced the number of SQL queries required to populate cart data in StoreApi.
diff --git a/plugins/woocommerce/src/StoreApi/Schemas/V1/CartSchema.php b/plugins/woocommerce/src/StoreApi/Schemas/V1/CartSchema.php
index 0fa8f6478f..822a0b4cfb 100644
--- a/plugins/woocommerce/src/StoreApi/Schemas/V1/CartSchema.php
+++ b/plugins/woocommerce/src/StoreApi/Schemas/V1/CartSchema.php
@@ -2,8 +2,8 @@
 namespace Automattic\WooCommerce\StoreApi\Schemas\V1;

 use Automattic\WooCommerce\StoreApi\SchemaController;
-use Automattic\WooCommerce\StoreApi\Utilities\CartController;
 use Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema;
+use Automattic\WooCommerce\StoreApi\Utilities\CartController;
 use WC_Tax;

 /**
@@ -341,7 +341,13 @@ class CartSchema extends AbstractSchema {
 		$shipping_packages = $cart->has_calculated_shipping() ? $controller->get_shipping_packages() : [];

 		// Get visible cross sells products.
-		$cross_sells = array_filter( array_map( 'wc_get_product', $cart->get_cross_sells() ), 'wc_products_array_filter_visible' );
+		$cross_sells    = array();
+		$cross_sell_ids = $cart->get_cross_sells();
+		if ( ! empty( $cross_sell_ids ) ) {
+			// Optimization note: priming reduces the number of SQLs required to populate the product objects.
+			_prime_post_caches( $cross_sell_ids );
+			$cross_sells = array_filter( array_map( 'wc_get_product', $cross_sell_ids ), 'wc_products_array_filter_visible' );
+		}

 		return [
 			'items'                   => $this->get_item_responses_from_schema( $this->item_schema, $cart->get_cart() ),