You set shipping class for each WooCommerce Product variant, but the cart page still shows multiple shipping methods, why?
Because WooCommerce misleading you! Shipping class is a bad name, you have to read this article to learn what’s it indeed. Shortly, I take it as a kind of “additional fee option”.
Thus what you have to do is limit the shipping methods by product.
With Booster plus for WooCommerce, you can realize it easily.
just 2 steps, you need not set the shipping class (yes, you can if you want to)
Step 1 build two or more shipping methods
yourdomain/wp-admin/admin.php?page=wc-settings&tab=shipping§ion


Step 2 limits shipping methods by-products
yourdomain/wp-admin/admin.php?page=wc-settings&tab=jetpack&wcj-cat=shipping_and_orders§ion=shipping_by_products

Please pay attention to what options have been selected as the attached image shows.
At last, test it
Remember to change the country/city on the cart page, if you’ve set specific shipping zones.
And this method also works if you want to filter products by product category or tag.