WooCommerce: tarifas de envío por cantidad de pedido

La nueva gestión de la zona de envío que se introdujo con Woo 2.6 nos brinda la posibilidad de agregar una tarifa plana, envío gratuito y métodos de recogida local de forma predeterminada.

Pero, ¿qué sucede si un cliente requiere 3 tarifas diferentes según el monto del pedido ( envío escalonado )? Por ejemplo: “Para pedidos de hasta $100, envío = $5; para pedidos de hasta $250, envío = $2; para pedidos superiores a $500, envío = gratis”.

¿Es esto posible sin usar un complemento? Bueno, la respuesta, como siempre, es ¡absolutamente sí! ¡Disfrutar!

1. Envío escalonado: configuración de la zona de envío

Ve a WooCommerce > Configuración > Envío y crea tu zona de envío. En el ejemplo, me dirigiré a clientes de EE. UU. y le agregaré 3 métodos de envío: tarifa plana, tarifa plana y envío gratuito.

Configuración de la zona de envío para el envío por niveles
Configuración de la zona de envío para el envío por niveles

2. Envío escalonado: configuración de métodos de envío

Abra cada uno de los métodos de envío agregados previamente a la zona y cámbieles el nombre / configúrelos así:

  1. Tarifa plana n.º 1 > cambie el nombre a «Pedidos por debajo de $100» y asigne un costo = $5
  2. Tarifa plana n.º 2 > cambie el nombre a «Pedidos por debajo de $250» y asigne un costo = $2
  3. Envío gratis > seleccione «Requiere un pedido mínimo» = $500

Aquí está una de las configuraciones del método:

Configuración del método de envío para el envío por niveles
Configuración del método de envío para el envío por niveles

3. Envío escalonado – Fragmento de PHP

Ahora debemos «decirle» a WooCommerce que, según el monto del pedido, se debe usar una tarifa plana en lugar de la otra. Solo de esta manera podemos mostrar el método de envío correcto al usuario final.

Primero, tome nota de la identificación única de las dos tarifas planas. Deben verse algo así como » tarifa_plana: 9 «. Para obtener más información sobre cómo encontrarlo, consulte el párrafo «Cómo encontrar el ID de clase de envío» aquí: https://businessbloomer.com/woocommerce-disable-free-shipping-if-cart-has-shipping-class

Segundo, ¡vamos a codificar! Tendremos que «desestablecer» la tarifa plana #2 si tenemos menos de $100, de lo contrario, necesitaremos «desestablecer» la tarifa plana #1.

/**
* @snippet       Tiered Shipping Rates | WooCommerce
* @how-to        Get CustomizeWoo.com FREE
* @author        Rodolfo Melogli
* @testedwith    WooCommerce 5.0
* @donate $9     https://businessbloomer.com/bloomer-armada/
*/
 
add_filter( 'woocommerce_package_rates', 'bbloomer_woocommerce_tiered_shipping', 10, 2 );
 
function bbloomer_woocommerce_tiered_shipping( $rates, $package ) {
   $threshold = 100;
   if ( WC()->cart->subtotal < $threshold ) {
      unset( $rates['flat_rate:1'] );
   } else {
      unset( $rates['flat_rate:2'] );
   }
   return $rates;
}

Deja un comentario