Si no habéis realizado una configuración con el plugin que uso en mi guía de envíos en WooCommerce, si tenéis configurado el envío gratis a partir de cierto importe os encontraréis en un caso como este:
Efectivamente, el cliente ha llegado al pedido mínimo gratis pero tiene que elegir que quiere envío gratis. Muchos clientes ni se dan cuenta que tienen que hacerlo y pasan dos cosas: o lo acaba pagando sin querer o bien se siente estafado porque decían que después de X importe era gratis.
En este tutorial voy a enseñar como arreglar esto, tanto con un código como con un plugin.
Índice
Mediante plugin: WC Hide Shipping Methods
Este plugin es gratuito, se encuentra en el repositorio oficial de WordPress. Una vez instalado nos vamos a WooCommerce > Ajustes > Envío > Opciones de envío y nos encontraremos esta nueva zona:

Como se aprecia en la imagen podemos configurar que solo salga el envío gratis cuando está disponible, o bien si también vendemos de forma local mostrar solo esos dos.
Como podéis ver es un plugin muy sencillo y fácil de configurar, mostrando el siguiente resultado:

Con código
WooCommerce.com ofrece estos snippets desde su web. Aun así os los dejo aquí:
Solo mostrar envío gratis
/**
* Ocultar las tarifas de envío cuando el envío gratuito está disponible.
* Actualizado para soportar las zonas de envío de WooCommerce 2.6.
*/
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 );
Solo envío gratis y recogida local:
/**
* Ocultar las tarifas de envío cuando el envío gratuito está disponible, pero mantener "Recogida local"
* Actualizado para soportar las zonas de envío de WooCommerce 2.6
*/
function hide_shipping_when_free_is_available( $rates, $package ) {
$new_rates = array();
foreach ( $rates as $rate_id => $rate ) {
// Only modify rates if free_shipping is present.
if ( 'free_shipping' === $rate->method_id ) {
$new_rates[ $rate_id ] = $rate;
break;
}
}
if ( ! empty( $new_rates ) ) {
//Save local pickup if it's present.
foreach ( $rates as $rate_id => $rate ) {
if ('local_pickup' === $rate->method_id ) {
$new_rates[ $rate_id ] = $rate;
break;
}
}
return $new_rates;
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );
Los podéis añadir al archivo functios.php o a vuestro plugin Code Snnipets como explico aquí.
Eso es todo, cualquier duda como siempre los leo en comentarios!
Deja una respuesta