Hide specific shipping method when free shipping is available [duplicate]

I would like to hide other shipping options when free shipping is available on Woocommerce.

Because latest version of woocommerce now is still showing other shipping options even if there's FREE shipping option.

Please help


There is this recent code snippet for WooCommerce 2.6+. that you can Use:

add_filter( 'woocommerce_package_rates', 'hide_other_shipping_when_free_is_available', 100, 2 );

function hide_other_shipping_when_free_is_available( $rates, $package ) {

    $free = array();
    foreach ( $rates as $rate_id => $rate ) {
        if ( 'free_shipping' === $rate->method_id ) {
            $free[ $rate_id ] = $rate;
            break;
        }
    }
    return ! empty( $free ) ? $free : $rates;
}

You will need to refresh shipping cached data: disable, save and enable, save related shipping methods for the current shipping zone, in woocommerce shipping settings.


For WooCommerce 2.5, You should try this:

add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );

function hide_shipping_when_free_is_available( $rates, $package ) {
    
    // Only modify rates if free_shipping is present
    if ( isset( $rates['free_shipping'] ) ) {
    
        // To unset a single rate/method, do the following. This example unsets flat_rate shipping
        unset( $rates['flat_rate'] );
        
        // To unset all methods except for free_shipping, do the following
        $free_shipping          = $rates['free_shipping'];
        $rates                  = array();
        $rates['free_shipping'] = $free_shipping;
    }
    
    return $rates;
}

Paste this code in the function.php file located in your active child theme or theme.


Reference: Hide other shipping methods when FREE SHIPPING is available (official doc)

Related:

  • How to hide free shipping when there is shipping costs in WooCommerce
  • Hide specifics Flat Rates when Free Shipping is available in WooCommerce 3
  • WooCommerce: Hide other shipping methods except local pickup when free shipping is available
  • WooCommerce Free Shipping if over 5 pounds