Woocommerce

Ocultar métodos de envío si existe envío gratis

Si quieres que no se muestren el resto de métodos de envío en el checkout de WooCommerce cuando existe el método de envío gratuito, a continuación te explico cómo hacerlo.

Nos ponemos en la situación en la que ya disponemos de un método de envío con coste fijo de, por ejemplo, 5 euros para los envíos que no superen los 50 euros pero a partir de ahí, que el envío sea gratis.

add_filter( 'woocommerce_package_rates', 'oaf_unset_shipping_when_free_is_available_all_zones', 10, 2 );
   
function oaf_unset_shipping_when_free_is_available_all_zones( $rates, $package ) {
      
  $all_free_rates = array();
     
  foreach ( $rates as $rate_id => $rate ) {
    if ( 'free_shipping' === $rate->method_id ) {
       $all_free_rates[ $rate_id ] = $rate;
       break;
    }
  }
     
  if ( empty( $all_free_rates )) {
    return $rates;
  } else {
    return $all_free_rates;
  } 
 
}