Commit 2f84d2b5989 for woocommerce

commit 2f84d2b598922f8a8b9dd4afe2a746cf14d758cc
Author: Luigi Teschio <gigitux@gmail.com>
Date:   Thu May 21 14:16:48 2026 +0200

    Disable product list name and price sorting (#65244)

    * Disable product list name and price sorting

    * Add changelog entry for disabled product sorting

diff --git a/packages/js/experimental-products-app/changelog/fix-disable-name-price-sort b/packages/js/experimental-products-app/changelog/fix-disable-name-price-sort
new file mode 100644
index 00000000000..1a60b74e913
--- /dev/null
+++ b/packages/js/experimental-products-app/changelog/fix-disable-name-price-sort
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Disable sorting by product name and price in the product list.
diff --git a/packages/js/experimental-products-app/src/fields/name/field.tsx b/packages/js/experimental-products-app/src/fields/name/field.tsx
index 5e7644a0f7d..d1d125fa752 100644
--- a/packages/js/experimental-products-app/src/fields/name/field.tsx
+++ b/packages/js/experimental-products-app/src/fields/name/field.tsx
@@ -13,7 +13,7 @@ import { type ProductEntityRecord } from '../types';
 const fieldDefinition = {
 	type: 'text',
 	label: __( 'Name', 'woocommerce' ),
-	enableSorting: true,
+	enableSorting: false,
 	filterBy: false,
 	enableHiding: false,
 } satisfies Partial< Field< ProductEntityRecord > >;
diff --git a/packages/js/experimental-products-app/src/fields/price/field.tsx b/packages/js/experimental-products-app/src/fields/price/field.tsx
index b1d4938cc7f..a258e71497f 100644
--- a/packages/js/experimental-products-app/src/fields/price/field.tsx
+++ b/packages/js/experimental-products-app/src/fields/price/field.tsx
@@ -57,7 +57,7 @@ const CurrencySuffixSlot = () => {

 const fieldDefinition = {
 	label: __( 'Price', 'woocommerce' ),
-	enableSorting: true,
+	enableSorting: false,
 	filterBy: {
 		operators: [ 'is', 'between', 'greaterThanOrEqual', 'lessThanOrEqual' ],
 	},
diff --git a/packages/js/experimental-products-app/src/product-list/query.test.ts b/packages/js/experimental-products-app/src/product-list/query.test.ts
index 6b32d587e5b..46ee45e7204 100644
--- a/packages/js/experimental-products-app/src/product-list/query.test.ts
+++ b/packages/js/experimental-products-app/src/product-list/query.test.ts
@@ -26,14 +26,28 @@ describe( 'buildProductListQuery', () => {
 			expect.objectContaining( {
 				per_page: 25,
 				page: 3,
-				order: 'asc',
-				orderby: 'title',
 				_embed: 1,
 				search_name_or_sku: 'hoodie',
 			} )
 		);
 	} );

+	it( 'does not map disabled sort fields to query params', () => {
+		const nameSortQuery = buildProductListQuery( baseView );
+		const priceSortQuery = buildProductListQuery( {
+			...baseView,
+			sort: {
+				field: 'price',
+				direction: 'desc',
+			},
+		} as View );
+
+		expect( nameSortQuery.order ).toBeUndefined();
+		expect( nameSortQuery.orderby ).toBeUndefined();
+		expect( priceSortQuery.order ).toBeUndefined();
+		expect( priceSortQuery.orderby ).toBeUndefined();
+	} );
+
 	it( 'maps supported filters to the v4 product query', () => {
 		const query = buildProductListQuery( {
 			...baseView,
diff --git a/packages/js/experimental-products-app/src/product-list/query.ts b/packages/js/experimental-products-app/src/product-list/query.ts
index a5eff74171a..bb906442bba 100644
--- a/packages/js/experimental-products-app/src/product-list/query.ts
+++ b/packages/js/experimental-products-app/src/product-list/query.ts
@@ -29,6 +29,7 @@ export type ProductListQuery = Omit<
 };

 const SUPPORTED_STATUS_FILTER_FIELDS = [ 'status', 'product_status' ];
+const DISABLED_SORT_FIELDS = [ 'name', 'price' ];

 function isStringArray( value: unknown ): value is string[] {
 	return (
@@ -232,15 +233,19 @@ function applyStockQuantityFilter( query: ProductListQuery, filter: Filter ) {
 }

 export function buildProductListQuery( view: View ): ProductListQuery {
+	const sort =
+		view.sort && ! DISABLED_SORT_FIELDS.includes( view.sort.field )
+			? view.sort
+			: undefined;
 	const query: ProductListQuery = {
 		_embed: 1,
 		per_page: view.perPage,
 		page: view.page,
-		order: view.sort?.direction,
+		order: sort?.direction,
 		orderby:
-			view.sort?.field === 'name'
+			sort?.field === 'name'
 				? 'title'
-				: ( view.sort?.field as ProductQuery[ 'orderby' ] ),
+				: ( sort?.field as ProductQuery[ 'orderby' ] ),
 		search_name_or_sku: view.search || undefined,
 	};