He oído una infinidad de veces una protesta casi generalizada de los usuarios de Woocommerce: “Si los gastos de envío son gratis no deben aparecer otras opciones de envío en Woocommerce”. Es decir se deberían ocultar todos los métodos de envío cuando se muestre el método de envío gratis
En la mayoría de ocasiones es así y cuando por ejemplo ponemos envío gratis a partir de un determinado importe del pedido, no tiene sentido que se muestre el envío gratuito como una opción junto a otros gastos de envío.
Por ejemplo, no tiene sentido que el cliente tenga que elegir entre: gastos de envío gratis y envío estándar, ya que el cliente va a elegir siempre el envío gratuito. Pero es algo tan de sentido común que si le ofrecemos la opción al cliente para que elija, éste puede liarse o «descolocarse» al parecerle la elección algo realmente extraño.
Vamos a ver todo esto en este post:
DISFRUTA DE TODOS MIS CURSOS PREMIUM POR SOLO 10€/MES
ÍNDICE DEL POST
- Woocommerce muestra todos los gastos de envío aunque aparezca el envío gratuito
- Mostrar recogida en tienda y gastos de envío gratis en Woocommerce
- Plugin para quitar gastos de envío cuando aparezca el envío gratis woocommerce
- Código para ocultar métodos de envío cuando se muestre el método de envío gratis en Woocommerce
Woocommerce muestra todos los gastos de envío aunque aparezca el envío gratuito
Woocommerce siempre muestra todos los gastos de envío disponibles. Si tenemos un gasto de envío con precio fijo y un gasto de envío gratis (en pedidos a partir de 100€), cuando un cliente realice un pedido superior a los 100 € se le van a mostrar dos gastos de envío para que elija:
El gasto de envío gratuito: que le corresponde al haber hecho un pedido superior a 100 €
El envío con precio fijo: gastos de envío con precio fijo.
El cliente tendrá que elegir entre el envío gratuito y el envío con precio fijo, algo que no tiene sentido y que puede descolocar un poco al cliente.
Por defecto en Woocommerce se muestra el método de envío gratuito junto al resto de métodos de envío
Mostrar recogida en tienda y gastos de envío gratis en Woocommerce
Un caso en que sí tendría sentido que se mostrara otro gasto de envío junto al gasto de envío gratis sería el de recogida en tienda. Ya que seguramente el de recogida en tienda también será gratis pero no es lo mismo recogerlo en tienda que enviarlo al domicilio, por lo que en este caso si tiene sentido que aparezcan los dos tipos de gastos de envío y que el cliente tenga que elegir uno de ellos.
Plugin para quitar gastos de envío cuando aparezca el envío gratis woocommerce
Vamos a ver un plugin gratis denominado: “WC Hide shipping Methods” (Ocultar gastos de envío en Woocommerce).
Para configurar este plugin para ocultar métodos de envío, una vez lo hayamos instalado, tendremos que ir a: “Woocommerce > Ajustes > Envío > Opciones de envío”.
Una vez aquí en la parte inferior veremos un apartado denominado “Hide Shipping Methods” con 2 opciones:
Ocultar métodos de gastos de envío (incluso o excepto recogida en tienda) con el envío gratis
a.- Hide all other shipping methods and only show “free shipping”: si elegimos esta opción ocultaremos todos los métodos de envío de woocommerce cuando se muestre el método de envío gratis. Es decir, cuando se muestren gastos de envío gratis no aparecerá ningún otro tipo de gastos de envío.
Tampoco aparecería el de recogida en tienda cuando se muestre el método de gastos de envío gratis.
b.- Hide all other shipping methods and only show “Free shipping” and “Local Pickup”: si elegimos esta opción se ocultarán todos los métodos de envío cuando se muestre el método de envío gratis de Woocommerce a excepción del método de envío de recogida en tienda que si se mostrará junto al método de envío gratis.
Recuerda guardar los cambios
Código para ocultar métodos de envío cuando se muestre el método de envío gratis en Woocommerce
Si no quieres utilizar un plugin para ocultar los gastos de envío en Woocommerce cuando aparezca el gasto de envío gratis puedes utilizar el siguiente código e introducirlo en el archivo functions.php de tu tema hijo.
Recuerda que este archivo functions.php es un archivo muy sensible y que mal modificado puede provocar que se deje de ver wordpress.
Este código lo he encontrado en la documentación oficial de Woocommerce-> Ver página
El siguiente código es válido para instalaciones de Woocommerce igual o superiores a la versión 3.0. El código para versiones anteriores lo puedes ver en la página oficial de Woocommerce que tienes en el anterior enlace.
/**
* ocultar métodos de envío cuando se muestra el método de envio gratuito
* @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 );
Me encanta el diseño web y el mundo del ecommerce. Apasionado de Prestashop, Woocommerce/Wordpress y de la formación. Me gustaría que este blog te sirviera de ayuda para poner en marcha e ir mejorando y evolucionando tu tienda online. Ya seas un profesional del sector o no, seguro que encontrarás mucha información de valor e interés aquí.
buenas tardes:
Tengo una tienda online y tres métodos de envíos: recogida en tienda, precio fijo y me he creado uno de envío a cargo del cliente. En el producto indico la clase de envío pero cuando voy al carrito no me aparece marcada por defecto esa opción en los productos de esa clase y tiene que elegir el cliente entre las opciones.
Hay alguna manera o plugin de solucionarlo
Muchas gracias.
Muchas gracias por este artículo, he instalado el plugin y genial. Ya sólo se ve los gastos de envío cuando no se llega a la cantidad de envíos gratuitos
Hola Concha.
Me alegro que te haya servido este post para ocultar gastos de envío cuando se muestra el envío gratuito
***Como veo que estás en proceso de creación de tu tienda en Woocommerce, me gustaría invitarte a que echaras un vistazo a mi plataforma de formación online, en la que encontrarás cursos de Woocommerce, WordPress, SEO para tiendas online, Analytics para ecommerce, y muchos más. En este momento, por solo 10 €/mes puedes acceder a TODOS los cursos. Además, incluye soporte. -> CURSOTIENDAONLINE.COM***
Hola Joaquín,
Muy interesante este post.
Me gustaría saber si hay alguna forma de hacer que el envío siga siendo gratuito después de aplicar un cupón. Es decir, el envío gratuito tiene un mínimo de compra que una vez sobrepasado se activa. Pero si aplicamos un cupón de descuento y el precio se queda por debajo de ese mínimo, se cobran los portes y esto no tendría mucho sentido.
Gracias.
Un saludo,
Hola, muchas gracias por tu post. Me ha servido de mucha ayuda. Quería hacerte una consulta a ver si me puedes ayudar. En mi tienda tengo dos métodos de envío: Recogida local y Envío a domicilio.
Cuando se selecciona ‘Recogida Local’ solicito al cliente que conteste a dos preguntas en ‘Información adicional’ (Día y hora que irá a la tienda). Pero si selecciona ‘Envío a domicilio’ no quiero que aparezca el cuadro de Información adicional con esas preguntas.
Gracias a tu post he podido hacer que si se selecciona «Recogida local» no aparezcan los datos de dirección en el formulario de facturación, pero me gustaría que si selecciona «Envío a domicilio» no aparezca los campos de «Información adicional» que si necesito para el caso de recogida en tienda.
Te agradecería mucho tu ayuda. Un saludo.
Buenas Fernando.
No conozco ningún plugin para eso. Supongo que tendrías que programarlo, crear una función que lo implementara.
Hola Joaquín,
Primero que nada, buen post!
Tengo una duda, espero que me puedas ayudar. Debido a algunos problemas logísticos, la tienda online de la empresa solo puede ofrecer «Recogida a tienda». La cuestión es que nos interesaría, por el momento y hasta que tengamos la logística solucionada, que los consumidores vean SOLO «Recogida a tienda».
Te explico; hacerlo desde zona de envío a Barcelona -nuestro caso- está bien, pero simplemente no queremos que salga su dirección en el CARRITO DE COMPRA (en el CHECKOUT no sale, por lo que está bien hasta este punto) debido a que creemos que les va generar cierta duda sobre si les vamos a enviar o no a la dirección que nos introducen.
¡Muchas gracias por adelantado!
Muy buenas.
No entiendo a que te refieres. Por favor, dame más detalles
un saludo
Hola, Joaquín,
A ver si puedes echarme un cable, que no soy capaz… ni encuentro solución.
Tengo configurados 3 gastos de envío gratuitos:
· Entrega en domicilio
· Entrega en oficina de correos
· Recogida en local
El plugin que mencionas, o el propio código que facilita Woocomerce en su página, permite ocultar los gastos de envío cuando estos son gratuitos, pero también me oculta uno de los gratuitos.
Es decir, muestra el primero de los gratuitos (por orden de ubicación) y recogida en local, quedando en este caso oculto «entrega en oficina de correos»
Sabrías si hay un plugin o conoces alguna función que permita solucionarlo??
Saludos
Hola Fernando.
¿Has probado a poner el de «entrega en oficina de correos» como tipo «recogida en local»?
Hola!
Valoré la opción, pero no es viable porque necesito poner una importe mínimo de pedido para gastos de envío gratuitos y con este «recogida en local» no es poosible 😅
Ya lo he solucionado, gracias por tu ayuda, Joaquín.
La clave está en la función; hay que decirle que muestre todos los métodos de envío gratuitos.
Saludos,
Hola Fernando.
Me alegro que ya lo hayas resuelto
un saludo
Hola Fernando, tengo el mismo problema. ¿Como queda la funcion modificada con los diferentes métodos de envío gratuitos? gracias!
Buenas, seria posible la opción de borrar «envio gratuito» (correspondiente de 3 a 5 dias) al pasar un importe y a la vez dar la opción de «envio 24h» por ejemplo, para aquel cliente que quiera tener el producto en su casa mañana??
Buenas.
Por defecto Woocommerce no elimina el resto de gastos de envío cuando se muestra el envío gratuito. Solo se ocultan en el caso de instalar y activar el plugin WC Hide shipping Methods
Hola, Joaquin, es de gran ayuda tu consejo y el plugin!
Te hago una consutla en cuanto a la Recogida en tienda. Configure la «recogida en tienda», pero al poner que el costo es 0 (cero) automáticamente en la web muestra «Recogida local – ¡Envio Gratis!» Lo cual puede llegar a ser confuso para los clientes. Hay manera de eliminar el mensaje sin tener que ingresar ningun tipo de costo?
Desde ya muchas gracias!
Hola Bel.
Pero, ¿has personalizado el texto de la recogida local?
un saludo
Hola Joaquin, lo unico que personalizamos en cuanto al texto fue que dijera Retiro en Tienda en vez de Recogida Local.
Automaticamente agrega el texto ¡Envío Gratis! sin que nosotros lo hayamos programado. Si dejo el valor = 0 (cero) en cuanto al costo de envio/retiro, muestra ese mensaje, pero si cobramos 0.01 en adelante, el mensaje desaparece.
Hola Bel.
Me parece muy raro lo que comentas, yo acabo de hacer una prueba en una web que tengo y no me aparece lo de «Envio Gratis».
Puedes verlo en la web de pruebas:
tallerprestashop.com/flatsome2
Hola! A mi también me pasa lo mismo. En la opción de retiro en local me aparece ¡Envío Gratis! ¿Cómo pudiste corregirlo?
Tengo el mismo problema!
Me aparece «Recogida Local – ¡Envío Gratis!» y es muy confuso, muchos usuarios creen que es envio gratis, y no que retiro en persona no tiene costo extra….
Sera por el tema usado?
Yo uso onepress, uds?
Hola! me pasa lo mismo y no se que hacer! Alguien pudo solucionarlo?
Hola Joaquin, he visto el php que pones en el functions, me gustaria saber si es possible hacer esto pero que tambien aparezca la opcion de recogida en tienda. Gracias!
Buenas.
Creo recordar que con el plugin que se comenta en el post, tiene una opción en la configuración para mostrar también la opción de recogida en tienda
Hola Joaquín, el plugin funciona perfectamente. Pero en mi caso tengo dos tipos de recogida en tienda ‘local_pickup’ y sólo me aparece uno. Como podría corregirlo?
Muchas gracis y un saludo.
Hola Javier.
Seguramente, ese tema solo te lo puede resolver el creador del plugin. Aquí tienes el enlace al foro de soporte del plugin para que pongas tu consulta: Foro soporte plugin WC Hide Shipping Methods
Muy util el plugin, muchas gracias!
Se agradece por la ayuda, este tipo de plugins son valorados y cada vez mas buscados cuando alguien empieza un proyecto.
Hola, muchas gracias por tu ayuda. Tengo una duda, y es cómo hacer un cupón de envío gratis con un código pero sólo para una zona de envío. Yo lo creo para una zona pero luego me permite introducirlo sea cual sea la dirección, siempre y cuando sea una dirección de alguna zona de envío contemplada. Por ejemplo, si envío a Península y a Baleares, pero quiero crear un cupón de envío gratis SOLO para península y que no lo puedan usar si la dirección es de baleares.
Muchas gracias
Buenas,
¿Pero el cupón funciona en las diferentes zonas, incluso en las zonas para donde no está configurado?
Una sola palabra ¡GRACIAS!
Hola Joaquín!
Este plugin nos viene muy bien, ¡muchas gracias!
Me gustaría saber si, además, es posible configurar el woocommerce con algún método (o plugin) de tal manera que en el carrito de la compra solamente aparezca el plazo de entrega del producto que más tardemos en enviar.
¡Un saludo!
Hola José,
No, en Woocommerce no hay ninguna opción para configurar lo que comentas
Hola Joaquín, es posible que se pueda quitar del checkout de registro de usuario los datos de dirección sólo si el comprador escoge la opción de recogida en tienda? Gracias
Hola Raquel,
No existe ninguna opción para ello en Woocommerce y tampoco en el plugin de ocultar gastos de envío con envío gratis.
Para eso me temo que te tendrían que realizar un desarrollo a medida, cosa que creo no vale la pena.
Buenos días… he activado el plugin pero no me aparece la opción de recogida en tienda además de envío gratuito… Qué estoy haciendo mal?
Muchas gracias…
Hola Noelia,
Pero ¿has marcado la opción: «Hide all other shipping methods and only show “Free shipping” and “Local Pickup»?
Un saludo
De muchísima ayuda este plugin! grande crack 😉
Hola Javi,
Me alegro que te haya servido de ayuda el plugin para ocultar gastos de envío cuando se muestra el envío gratuito en Woocommerce
Un saludo
Buenas Joaquin, gracias por todas las explicaciones
he instalado el plugin pero me aparece siempre solo el envio gratuito, aunque no se cumpla el requisito de importe minimo
puedes echarme una mano? gracias!
Joaquin, no te dije nada, ya funciona, seria el cache!!gracias por tu post!!
Buenas,
Sí, era muy raro. Me alegro que ya se haya solucionado.
Buenas,
Comprueba que el resto de gastos de envío están bien configurados. ¿si desactivas el plugin te salen los otros gastos de envío (los que no son gratuitos)?
BUENAS ALAVARO.
INSERTO CODIGO PERO ME SALE IGUAL
Buenas Manuel,
Si no te funciona el código, prueba con el plugin que se comenta en el post
Muy buen artículo, pero me surge otra duda. Si los gastos de envío son gratuitos por el importe superior a X ¿Porqué sale la calculadora de gastos de envío? ¿Como se podría ocultar también?. Un saludo.
Buenas,
la calculadora la puedes desactivar desde «Woocommerce > Ajustes > Envío > Opciones de envío», en el campo: «Activar la calculadora de envíos en la página de compra». Pero no es posible desactivarla para algunos casos y otros no. Solo puede estar activada o desactivada.
Buenas Joaquin, he insertado el código y desaparece la opción tal y como indicas. El problema está en que siempre me muestra por defecto el envío gratuito. Como puedo dejar por defecto siempre los Envios con coste y cuando tiene 2 o mas productos se aplique el envio gratuito?
Hola Antonio,
No hay ninguna opción en Woocommerce para configurar la funcionalidad que quieres de mostrar gastos de envío según el número de productos del carrito, tendrías que buscar a ver si existe un plugin para ello.
Gracias Joaquin, me ha servido para ocultar el método de envío cuando estaba la opción gratis disponible
Hola Joaquín,
Al intentar instalar el Plugin, me sale el mensaje siguiente:
No se ha podido descomprimir el paquete. PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature
Entiendo que al no ser un archivo Zip sale este mensaje, pero no se cómo hacerlo.
¿Me ayudas?
Muchas gracias,
Un saludo.
Buenas,
ve en tu panel de administración a «Plugins > Añadir nuevo», en la caja de búsqueda introduce el nombre del plugin, que es: WC Hide Shipping Methods
Cuando te aparezca el plugin haz clic en «Instalar ahora», y una vez instalado haz clic en «Activar»
Un saludo
Mil gracias!!
gracias a ti,
un saludo
Ahí alguna forma de ocultar métodos si ahí otro método que no sea el gratuito activo?
Buenas Alavaro,
con las opciones por defecto de woocommerce no es posible, y tampoco conozco ningún plugin para ello.