WooCommerce Only Show Free Shipping Rates

You can force WooCommerce to only show free shipping rates if the carts contents qualify and hide the other shipping rates with this code snippet below, which uses the woocommerce_package_rates filter, it goes in your themes functions.php file

add_filter( 'woocommerce_package_rates', 'prefix_hide_shipping_when_free_is_available', 100 );
/**
 * Hide shipping rates when free shipping is available.
 * Updated to support WooCommerce 2.6 Shipping Zones.
 *
 * @param array $rates Array of rates found for the package.
 * @return array
 */
function prefix_hide_shipping_when_free_is_available( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}
	return ! empty( $free ) ? $free : $rates;
}

Ref

Leave all Comment