Commit 02918a26cb7 for woocommerce
commit 02918a26cb7780f61f9472423763240b474208c1
Author: Luigi Teschio <gigitux@gmail.com>
Date: Mon May 18 12:43:14 2026 +0200
Remove products shipping class filter (#65120)
* Remove products shipping class filter
* Add changelog for shipping class filter removal
diff --git a/packages/js/experimental-products-app/changelog/update-remove-shipping-class-filter b/packages/js/experimental-products-app/changelog/update-remove-shipping-class-filter
new file mode 100644
index 00000000000..10728579c4c
--- /dev/null
+++ b/packages/js/experimental-products-app/changelog/update-remove-shipping-class-filter
@@ -0,0 +1,4 @@
+Significance: patch
+Type: update
+
+Remove the Shipping Class filter from the experimental products app product list.
diff --git a/packages/js/experimental-products-app/src/fields/shipping_class/field.tsx b/packages/js/experimental-products-app/src/fields/shipping_class/field.tsx
index 4b632bba176..9646ac62571 100644
--- a/packages/js/experimental-products-app/src/fields/shipping_class/field.tsx
+++ b/packages/js/experimental-products-app/src/fields/shipping_class/field.tsx
@@ -2,9 +2,7 @@
* External dependencies
*/
import { __ } from '@wordpress/i18n';
-import { resolveSelect, useSelect } from '@wordpress/data';
-import { store as coreStore } from '@wordpress/core-data';
-import { decodeEntities } from '@wordpress/html-entities';
+import { useSelect } from '@wordpress/data';
import { SelectControl } from '@wordpress/ui';
import type { Field } from '@wordpress/dataviews';
@@ -27,9 +25,7 @@ const fieldDefinition = {
label: __( 'Shipping Class', 'woocommerce' ),
enableSorting: false,
enableHiding: false,
- filterBy: {
- operators: [ 'isAny', 'isNone' ],
- },
+ filterBy: false,
} satisfies Partial< Field< ProductEntityRecord > >;
export const fieldExtensions: Partial< Field< ProductEntityRecord > > = {
@@ -41,17 +37,6 @@ export const fieldExtensions: Partial< Field< ProductEntityRecord > > = {
getValue: ( { item } ) =>
item.shipping_class_id ? item.shipping_class_id.toString() : '',
render: ( { item } ) => item.shipping_class ?? '',
- getElements: async () => {
- const records = ( await resolveSelect( coreStore ).getEntityRecords(
- 'taxonomy',
- 'product_shipping_class',
- { per_page: -1 }
- ) ) as Array< { id: number; name: string } > | null;
- return ( records ?? [] ).map( ( { id, name } ) => ( {
- value: id.toString(),
- label: decodeEntities( name ),
- } ) );
- },
isVisible: ( item ) => ! item.virtual,
Edit: ( { data, onChange, field } ) => {
const { shippingClasses } = useSelect( ( select ) => {
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 91c6c30de2e..243ffd29a6e 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
@@ -203,7 +203,8 @@ describe( 'buildProductListQuery', () => {
expect( query.brand ).toEqual( '8,9' );
} );
- it( 'maps the shipping_class isAny filter to the shipping_class query param', () => {
+
+ it( 'ignores shipping_class filters', () => {
const query = buildProductListQuery( {
...baseView,
filters: [
@@ -215,23 +216,9 @@ describe( 'buildProductListQuery', () => {
],
} as View );
- expect( query.shipping_class ).toEqual( '3,4' );
+ expect( query.shipping_class ).toBeUndefined();
} );
- it( 'maps the shipping_class isNone filter to exclude_shipping_class', () => {
- const query = buildProductListQuery( {
- ...baseView,
- filters: [
- {
- field: 'shipping_class',
- operator: 'isNone',
- value: [ '3', 4 ],
- },
- ],
- } as View );
-
- expect( query.exclude_shipping_class ).toEqual( [ 3, 4 ] );
- } );
it( 'maps the stock_quantity is filter to both min and max', () => {
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 8ba7308e5fa..d2747a27849 100644
--- a/packages/js/experimental-products-app/src/product-list/query.ts
+++ b/packages/js/experimental-products-app/src/product-list/query.ts
@@ -16,7 +16,6 @@ export type ProductListQuery = Omit< ProductQuery, 'status' > & {
include_types?: ProductType[];
exclude_types?: ProductType[];
exclude_category?: number[];
- exclude_shipping_class?: number[];
exclude_tag?: number[];
min_stock_quantity?: string;
max_stock_quantity?: string;
@@ -139,21 +138,6 @@ function applyBrandFilter( query: ProductListQuery, filter: Filter ) {
query.brand = values.join( ',' );
}
-function applyShippingClassFilter( query: ProductListQuery, filter: Filter ) {
- const values = getNumericValues( filter.value );
-
- if ( values.length === 0 ) {
- return;
- }
-
- if ( filter.operator === 'isNone' ) {
- query.exclude_shipping_class = values;
- return;
- }
-
- query.shipping_class = values.join( ',' );
-}
-
function applyStockFilter( query: ProductListQuery, filter: Filter ) {
const [ stockStatus ] = getStringValues( filter.value );
@@ -262,9 +246,6 @@ export function buildProductListQuery( view: View ): ProductListQuery {
case 'categories':
applyCategoryFilter( query, filter );
break;
- case 'shipping_class':
- applyShippingClassFilter( query, filter );
- break;
case 'tags':
applyTagFilter( query, filter );
break;