Tabla de contenidos
Ocultar otros métodos de envío si existe envío gratis (fácil)
Ya sabes que en Woocommerce puedes crear métodos de envío gratuitos a partir de cierta cantidad de compra o un cupón de descuento y es habitual y recomendable que ofrecemos a nuestros clientes el típico “Envío gratuito a partir de 50€ de compra” para incentivar compras de mayor valor.
Lo que pasa es que por defecto Woocommerce muestra ambos métodos de envío y eso puede llevar a nuestro cliente a una situación de duda.
Woocommerce muestra ambos métodos de envío
¿Quién en su sano juicio pagaría los gastos de envío cuando los puede tener gratis? además, obligas al cliente a cambiar el método de pago, cuando debería mostrarse gratis por defecto.
Te explico como solucionarlo con o sin plugins
Como siempre, te propongo las dos opciones, aunque yo me decanto por la mas simple y ligera (unas líneas de código).
Recuerda que una instalación de WordPress con Woocommerce instalado, mas todo lo necesario para que funcione, hace que nuestra web no sea precisamente “ligera”.
Usando Hide Shipping Method For WooCommerce
Es cierto que el plugins nos permite configurar más opciones, tales como:
- Oculte todos los demás métodos de envío y cuando “Envío gratuito” esté disponible en la página del carrito
- Oculte todos los demás métodos de envío y cuando “Envío gratis” o “Recogida local” estén disponibles en la página del carrito
- Condicional Ocultar método de envío Reglas
Y dentro de la opción Condicional, podemos crear reglas como escoger el método de envío, o normas de envío oculto como filtrar por país, categoría de producto, etc.
Aunque no le veo demasiada utilidad, lo que realmente necesitamos es Ocultar otros métodos de envío si existe envío gratis en WooCommerce sin preocuparnos por crear condiciones.
Sin usar plugins (con una líneas de código)
Pues si me sigues, ya sabrás que te voy a proponer que uses el archiconocido plugin “Code Snippets” para pegar pequeños fragmentos de código sin necesidad de tocar el archivo functions.php ni crear un tema hijo.
Si no lo tienes ya instalado, ve al repositorio de WordPress y busca e instala “Code Snippets”.
Si quieres, puedes pegar en la barra de búsqueda de los plugins la URL del mismo: https://es.wordpress.org/plugins/code-snippets/ y te aparecerá el primero.
Te aparecerá una nueva opción en el menú de WordPress con el icono de unas tijeras, tienes que añadir un nuevo snippet, ponerle un título (el que quieras) y pegar unas líneas de código.
El fragmento que has de pegar es el siguiente:
/**Ocultar otros métodos de envío si existe envío gratis en WooCommerce**/
function ocultar_metodos_cuando_exista_envio_gratis( $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;
}
}
add_filter( 'woocommerce_package_rates', 'ocultar_metodos_cuando_exista_envio_gratis', 10, 2 );
Y nada más, ahora cuando exista la opción de método de envío gratuito, este se mostrará por defecto y el resto quedarán ocultas.
De forma automática se van a Ocultar otros métodos de envío si existe envío gratis en Woocommerce.