Woocommerce: desactivar el resto de métodos de envío si el envío gratuito está activado.

En el vídeo sobre la configuración de los métodos de envío de Woocommerce, os comentamos que el envío gratuito tiene un problema en la instalación por defecto.

Cuando se activa el envío gratuito, aparece junto a todo el resto de métodos. Es decir, el cliente verá métodos de envío con coste, y el gratuito. Cosa que, obviamente, no es muy deseable. Porque algún cliente puede equivocarse y pagar cuando no es necesario (y luego quejarse).

Hoy os explicamos cómo solucionarlo.

Cómo desactivar el resto de métodos de envío si el envío gratuito está activado en Woocommerce..

Woocommerce no tiene esta opción por defecto. Pero si que dan la solución en este post. Puedes hacerlo con o sin plugin.

  • Con plugin: puedes usar un plugin como este: https://wordpress.org/plugins/wc-hide-shipping-methods/. Pero recordad que cuando más añadas a tu web, más lenta y más problemas de seguridad.
  • Sin plugin: nosotros recomendamos, cuando sea posible, resolver estos problemas con código. Se puede, como siempre, añadir el código en el fichero functions.php de tu tema hijo, o usando un plugin como Snippets (uno que sirve para añadir muchos fragmentos de código).
    Este es el código que podemos usar:
/**
 * 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 my_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;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

En el enlace de Woocommerce que hemos dejado arriba, aparecen varias versiones del código para permitir recogida en local además de envío gratis, y cómo habilitarlo o deshabilitarlo según zonas.

En este vídeo explicamos cómo funciona el código y cómo activarlo.