Ocultar gastos de envío si es gratuito en Woocommerce
En Woocommerce, podemos configurar los envíos gratuitos si se cumple una regla o no, “podemos configurar que todos los envíos sean gratis” pero bueno no es el motivo de este post.
Para cumplir la regla de envío gratuito, Woocommerce dispone de 4 opciones.
- Un cupón válido de envío gratuito.
- Una cantidad mínima de pedido.
- Una cantidad mínima de pedido O un cupón
- Una cantidad mínima de pedido Y un cupón.
Nos vamos a centrar en el punto 2.
Vamos a configurar los envíos gratuitos cuando el importe del pedido supere los 300€ (este es el ejemplo de la web que estamos trabajando, este importe será a gusto del consumidor)
Por tanto, si un pedido supera los 300€ automáticamente va a aparecer en envío el método de envío gratuito.
Lo primero que tenemos que hacer es asignar que opción será la 1ª que aparezca en el carrito o finalizar compra.
Si dejamos las opciones como vemos en la siguiente imagen, por defecto estará cargando el importe del método de envío con precio fijo, aunque cumpla la regla de importe mínimo.
Si ordenamos los métodos de envío nos quedará de la siguiente manera.
Como se puede observar el método de envío gratuito pasa a ser la primera opción lo que lleva a la página de Finalizar Compra que esa sea la regla principal.
Pero aún sigue apareciendo el importe del método de envío fijo y esto puede ser malo para la experiencia del usuario, causando confusión y puede abandonar el pedido. Evitemos esto, vamos a ocultar ese método de envío cuando se cumpla la regla de envíos gratis. ¡Al Ataque!
¿Cómo vamos a hacer eso? Muy fácil, mediante un fragmento de código que insertaremos en Code Snippets, si quieres ver cómo funciona este maravilloso plugin visita este post.
Añadimos un nuevo fragmento de código en Code Snippets, e insertamos lo siguiente.
Ocultar métodos de envío si es gratuito en Woocommerce sin Plugin.
/** * Oculte las tarifas de envío cuando el envío gratuito esté disponible, pero mantenga "Recogida local" */ function hide_shipping_when_free_is_available( $rates, $package ) { $new_rates = array(); foreach ( $rates as $rate_id => $rate ) { // Solo modifique las tarifas si hay envíos gratis en la configuración. if ( 'free_shipping' === $rate->method_id ) { $new_rates[ $rate_id ] = $rate; break; } } if ( ! empty( $new_rates ) ) { //Mostrar recogida local si está configurado. 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 );
Guardamos y activamos nuestro fragmento de código.
Volvemos a nuestra página de Carrito o Finalizar Compra, refrescamos y ….
UPS! ¿Qué ha pasado? Sigue apareciendo el método de envío fijo. ¡NO te preocupes! Vamos a solucionarlo en un plis. ¡Al Ataque!
Accedemos a nuestro Woocommerce -> Ajustes -> Envío -> Zonas de Envío -> Métodos de Envío -> Método de envío fijo, en la web de ejemplo (Envíos Biker)
Editamos y sin hacer ninguna modificación Guardamos los cambios.
Volvemos a nuestra página de carrito o finalizar compra, refrescamos y… se hizo la magia.
Ya nos aparece solamente los métodos de envío de:
- Envío Gratuito
- Recogida en Local
Podemos hacer una configuración adicional e indicar en Envío Gratuito que regla se ha ejecutado para que el cliente pueda beneficiarse del envío gratuito.
Accedemos a nuestro Woocommerce -> Ajustes -> Envío -> Zonas de Envío -> Métodos de Envío -> Envío Gratuito -> Editamos.
En el título podemos añadir lo que queramos, por ejemplo, Envío gratuito (Compra Superior a 300€)
Así solucionamos un problema que nos podemos encontrar al configurar los envíos en Woocommerce.
Te dejo por aquí un vídeo donde lo explico en vivo.
Espero que disfrutes tanto como yo creando tiendas online y solucionando problemillas.
Si te ha servido, deja tu comentario y si no, también. Si te suscribes a mi canal de Youtube me ayudarás un montón, quiero seguir creando contenido de utilidad para todos.
Un abrazo, nos vemos en el siguiente post, adiós!
2 comentarios
Está genial! gracias!
Después de hacer esto me surge otra cosa..
Tengo puesto que a partir de 60€ de compra el envío sea gratuito. Lo q ocurre es q no quiero que los artículos rebajados tengan la opción de envío gratis ni pasando los 60€… alguna manera de hacerlo?
Gracias
Hola Esther.
Muchas gracias.
Por lo que preguntas, se me ocurre que podrías usar 2 alternativas.
1. Usar cupones de descuento y solo dispondrán ese envío gratis aquellos que estén bajo la restricción de uso del propio cupón.
2. Configurar reglas condicionales. Aquí necesitarías un plugin como «WooCommerce Conditional Shipping and Payments» o «WooCommerce Advanced Free Shipping», mira la documentación de cada plugin y observa si se adaptaría a las necesidades que tienes.
Un saludo.