Commit 6be78067582 for woocommerce

commit 6be78067582a2db1474458447320d47dadc4e372
Author: Darren Ethier <darren@roughsmootheng.in>
Date:   Wed Aug 19 09:18:09 2026 -0400

    Restore recently viewed widget filter compatibility (#67854)

diff --git a/plugins/woocommerce/changelog/fix-wooairr-97-restore-recently-viewed-query-ids b/plugins/woocommerce/changelog/fix-wooairr-97-restore-recently-viewed-query-ids
new file mode 100644
index 00000000000..df022dfbd83
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-wooairr-97-restore-recently-viewed-query-ids
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Restore the full Recently Viewed Products cookie ID list for widget query filters to preserve extension compatibility.
diff --git a/plugins/woocommerce/includes/widgets/class-wc-widget-recently-viewed.php b/plugins/woocommerce/includes/widgets/class-wc-widget-recently-viewed.php
index 69619f519fc..466e851a5ab 100644
--- a/plugins/woocommerce/includes/widgets/class-wc-widget-recently-viewed.php
+++ b/plugins/woocommerce/includes/widgets/class-wc-widget-recently-viewed.php
@@ -51,7 +51,7 @@ class WC_Widget_Recently_Viewed extends WC_Widget {
 	 */
 	public function widget( $args, $instance ) {
 		$viewed_products = ! empty( $_COOKIE['woocommerce_recently_viewed'] ) ? (array) explode( '|', wp_unslash( $_COOKIE['woocommerce_recently_viewed'] ) ) : array(); // @codingStandardsIgnoreLine
-		$viewed_products = array_slice( array_reverse( array_filter( array_map( 'absint', $viewed_products ) ) ), 0, 15 );
+		$viewed_products = array_reverse( array_filter( array_map( 'absint', $viewed_products ) ) );

 		if ( empty( $viewed_products ) ) {
 			return;
@@ -71,7 +71,7 @@ class WC_Widget_Recently_Viewed extends WC_Widget {
 		);

 		if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
-			$query_args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query -- Recently viewed product IDs are capped at 15.
+			$query_args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query -- Required to exclude hidden out-of-stock products from the recently viewed widget.
 				array(
 					'taxonomy' => 'product_visibility',
 					'field'    => 'name',
diff --git a/plugins/woocommerce/tests/legacy/unit-tests/widgets/class-wc-tests-widget.php b/plugins/woocommerce/tests/legacy/unit-tests/widgets/class-wc-tests-widget.php
index c5b610ba77f..878555a49c7 100644
--- a/plugins/woocommerce/tests/legacy/unit-tests/widgets/class-wc-tests-widget.php
+++ b/plugins/woocommerce/tests/legacy/unit-tests/widgets/class-wc-tests-widget.php
@@ -66,9 +66,9 @@ class WC_Tests_Widget extends WC_Unit_Test_Case {
 	}

 	/**
-	 * @testdox Should limit recently viewed widget queries from oversized cookies.
+	 * @testdox Should preserve extension-provided recently viewed cookie IDs in widget queries.
 	 */
-	public function test_recently_viewed_widget_query_limits_oversized_cookie(): void {
+	public function test_recently_viewed_widget_query_preserves_extension_cookie_ids(): void {
 		$viewed_product_ids = range( 1, 20 );
 		$query_args         = array();
 		$query_args_filter  = static function ( $args ) use ( &$query_args ) {
@@ -82,19 +82,19 @@ class WC_Tests_Widget extends WC_Unit_Test_Case {
 		add_filter( 'woocommerce_recently_viewed_products_widget_query_args', $query_args_filter );

 		try {
-			$widget = new WC_Widget_Recently_Viewed();
+			$sut = new WC_Widget_Recently_Viewed();

 			ob_start();
 			try {
-				$widget->widget( array(), array() );
+				$sut->widget( array(), array() );
 			} finally {
 				ob_end_clean();
 			}

 			$this->assertSame(
-				array_slice( array_reverse( $viewed_product_ids ), 0, 15 ),
+				array_reverse( $viewed_product_ids ),
 				$query_args['post__in'],
-				'An oversized recently viewed cookie should only send the 15 newest product IDs to the query.'
+				'The recently viewed widget query should preserve every product ID provided through the shared cookie.'
 			);
 		} finally {
 			remove_filter( 'woocommerce_recently_viewed_products_widget_query_args', $query_args_filter );