WooCommerce: Product Archive For Shipping Classes

In WooCommerce you have publicly accessible product archives for product categories e.g. “all tables“, product tags e.g. “all casual” and product attributes e.g. “all medium“. URLs are available to you and you can even define their custom permalink slug base via the settings e.g. /product-tag/, /product-cat/, etc.

What’s interesting though, is that there are many more “custom taxonomies” that are registered in WooCommerce, however they don’t seem to have their own archive, because it’s been decided they were not useful.

But what if you want to see, as a customer, all the shop products belonging to a specific shipping class? We’ve seen, for example, how to split the cart into packages based on shipping class – so it would be super helpful to customers, in such a case, to view all the products belonging to each shipping class at a given URL.

So, let’s do that!

Here’s the product archive for my “Large” shipping class. All you need is a couple of PHP lines.

PHP Snippet: Product Archive for WooCommerce Shipping Classes

Note: you may need to resave the WordPress permalinks once the snippet below is active. Also, please note that the archive pages will use the shipping class slug, and the “slug base” you set inside the snippet – the URL will be e.g. example.com/SLUG_BASE/shipping_class_slug

 * @snippet       Product Archive for Shipping Classes
 * @tutorial      Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 8
 * @community     Join https://businessbloomer.com/club/

add_filter( 'woocommerce_taxonomy_args_product_shipping_class', 'bbloomer_taxonomy_args_product_shipping_class' );

function bbloomer_taxonomy_args_product_shipping_class( $args ) {
	$args['query_var'] = true;
	$args['rewrite'] = array(
		'slug' => 'vendor', // SLUG_BASE
	return $args;

Where to add custom code?

You should place custom PHP in functions.php and custom CSS in style.css of your child theme: where to place WooCommerce customization?

This code still works, unless you report otherwise. To exclude conflicts, temporarily switch to the Storefront theme, disable all plugins except WooCommerce, and test the snippet again: WooCommerce troubleshooting 101

Related content

  • WooCommerce: Display Shipping Class @ Single Product Page
    In certain cases, you may want to show the name of the current product’s shipping class. This is helpful especially for B2B stores, or when the shipping class name is very descriptive and helps the customer with their shopping choices. Of all the places where we can print the shipping class, I chose the “Product […]
  • WooCommerce: Set Default Shipping Class For All Products
    Manually assigning a shipping class to each product can be tedious and time-consuming. Here’s where default product shipping classes come to the rescue! This code tutorial will show you how to set a default shipping class for your products in WooCommerce without the need to access the “edit product” WordPress admin page to pick an […]
  • WooCommerce: Show Shipping Class ID @ Shipping Class Admin Table
    You can use WooCommerce shipping classes to customize shipping rates for a defined group of products. You can manually add shipping classes via the /wp-admin/admin.php?page=wc-settings&tab=shipping&section=classes URL (i.e. WooCommerce > Settings > Shipping > Shipping Classes). We’ve often worked with snippets requiring a shipping class ID, and I explained there were a couple of ways to […]

Rodolfo Melogli

Business Bloomer Founder

Author, WooCommerce expert and WordCamp speaker, Rodolfo has worked as an independent WooCommerce freelancer since 2011. His goal is to help entrepreneurs and developers overcome their WooCommerce nightmares. Rodolfo loves travelling, chasing tennis & soccer balls and, of course, wood fired oven pizza. Follow @rmelogli

Questions? Feedback? Customization? Leave your comment now!

If you are writing code, please wrap it like so: [php]code_here[/php]. Failure to complying with this, as well as going off topic or not using the English language will result in comment disapproval. You should expect a reply in about 2 weeks - this is a popular blog but I need to get paid work done first. Please consider joining the Business Bloomer Club to get quick WooCommerce support. Thank you!

Your email address will not be published. Required fields are marked *