This can be achieved using Table Rate Shipping or a code snippet like shown below. These code snippets can be added to your theme/child-theme’s functions.php file. Before adding the snippets, make sure you clear your WooCommerce cache (WooCommerce > System Status > Tools > WC Transients > Clear transients), as shipping methods are cached.
Snippets for WC 2.6+
This snippet hides everything but free_shipping if it’s available and is compatible with Shipping Zones.
Snippets for WC 2.5
Show only free shipping in all states except…
Show only free shipping in all states except exclusion list, hide free shipping if the customer is in one of the states listed:
Enable Shipping Methods on a per Class / Product Basis ↑ Back to Top
If you want to have more flexibility, we recommend you to use this free plugin!