Digamos que queremos configurar tales reglas:
- 10$ tarifa plana
- envío gratis en pedidos de $200 o más
De forma predeterminada, configura dos métodos de envío: Tarifa plana para la primera condición y Envío gratuito para la segunda.
El envío gratuito no es difícil de configurar. Sin embargo, hay un problema con dicha configuración. Ambos métodos de envío aparecerán en el carrito.
Te contaré más sobre esto más adelante, y te daré algunas soluciones.
Tabla de contenido:
Cómo configurar el envío gratuito de WooCommerce sobre la cantidad
Ve a tu zona de envío: WooCommerce → Configuración → Envío y selecciona tu zona de envío.
Haga clic en el botón Agregar método de envío y seleccione los métodos de envío.
Una vez que los agregues, verás esta pantalla:
Haz clic en la Tarifa Plana . La configuración de tarifa plana para nuestro ejemplo se verá así:
El siguiente paso es configurar el Envío Gratis. Configura este método de envío de esa manera:
Ahora funciona. Ha configurado el envío gratuito de WooCommerce sobre el monto .
El problema: dos métodos de envío en el carrito
¿Cuál es el problema entonces? Cuando los clientes superen los 200€ en el pedido, verán ambos métodos de envío:
Lo que probablemente quieras lograr es mostrar solo uno de los métodos de envío. El envío gratuito.
Cuando los clientes no superan las 200 £ en el pedido, debe haber una tarifa plana de 10 £ en el carrito:
Cuando superen los 200 € en el pedido, solo debería haber envío gratuito disponible:
Creo que debería ser la forma predeterminada en la que funciona el envío gratuito de WooCommerce sobre la cantidad.
Si comparte mi opinión, consulte las soluciones que encontré.
Ocultar otros métodos de envío cuando el envío gratuito esté disponible
Necesita una función que oculte todos los demás métodos de envío y solo muestre el envío gratuito.
Encontré dos soluciones a este problema:
- un plugin,
- un fragmento de código.
Plugin de envío flexible
Esta es probablemente la solución más sencilla para configurar el envío gratuito de WooCommerce sobre la cantidad. Simplemente puede usar el plugin de envío flexible que desarrollamos.
Más de 100.000 tiendas en todo el mundo utilizan este plugin a diario.
Este plugin le permite crear métodos de envío de tarifa de tabla en su tienda WooCommerce.
¿Cómo configuraría el envío gratuito de WooCommerce sobre el monto en el plugin de envío flexible?
Mirar:
Simplemente establece 200 como envío gratuito . A continuación, agrega solo una regla de envío de tarifa de tabla configurando el costo de la regla: 10 .
Funcionará de la misma manera que la configuración anterior, basada en los métodos Tarifa Plana y Envío Gratis. Sin embargo, definitivamente es más fácil. Harás toda la configuración en un solo método de envío. Además, el plugin tiene una opción de etiqueta de envío gratis incorporada. Si se aplica el envío gratuito, puede mostrar información adicional para su cliente. Es algo pequeño, pero funciona muy bien como un toque UX, y también reducirá los carritos de compras abandonados.
Si desea fortalecer aún más su envío gratuito y aumentar el valor de su carrito de ventas, el plugin tiene otra característica: aviso de «envío gratuito». Gracias a él, tus clientes obtendrán información en su carrito de compras y en la página de pedido sobre la cantidad que falta para el envío gratis en WooCommerce .
Este plugin no solo es poderoso. ¡Está disponible para descargar gratis !
Envío flexible WooCommerce
El mejor envío de tarifa de tabla para WooCommerce. Período. Cree reglas de envío basadas en el peso, los totales de los pedidos o el número de artículos.
Fragmento de código
Hay otra solución. Simplemente puede agregar un fragmento al archivo function.php de su tema.
Es un fragmento corto como se puede ver a continuación:
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 );