WooCommerce: Mostrar solo envío gratuito si está disponible

En Woocommerce 2.6 ha habido cambios importantes en la parte de los Envíos. Si tenías una versión anterior, verás que al acceder a la configuración de envíos, aparecen “Tarifa plana (heredado)” y “Envío gratuito (heredado)”. Hay que definir los nuevos métodos de envío mediante las “Shipping zones”. Lo explican muy bien aqui: http://www.tiendaonlinemurcia.es/woocommerce-versiones-novedades/

Imagina que configuras un envío gratuito para pedidos de > 120€ y una tarifa plana de 5€ para el resto de envíos. Entonces, verás que el cliente puede elegir el método de envío gratuito y el envío de 5€. Realmente solo debería aparecer el envío gratuito, porque el cliente tiene derecho a él, y no el envío por tarifa estándar, que puede dar lugar a confusión.

¿Cómo se consigue ésto? Muy fácil,

Primero borra las cachés de WooCommerce: WooCommerce > System Status > Tools > WC Transients > Clear transients.

Y después mete estas líneas al final del archivo functions.php de tu theme:

/**
 * 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 );

Leave a Reply

Your email address will not be published. Required fields are marked *

Post Navigation