WooCommerce: cálculo de tarifa plana basado en el peso (¡sin complemento!)
Ya hablamos sobre el envío basado en el peso y en esta publicación descubrimos cómo cobrar diferentes tarifas planas según los umbrales de peso del envío.
Pero ahora quiero mostrarte cómo puedes usar la "Tarifa plana" predeterminada para calcular los costos de envío en función del peso del carrito, gracias a un multiplicador. Por ejemplo, su tarifa de envío podría ser "$5 por cada kg"; como sabe, la "Tarifa plana" predeterminada solo le permite definir una tarifa, por ejemplo, $10.
Entonces, ¿qué sucede si desea calcular los gastos de envío por peso? Bueno, aquí hay una solución simple para usted.

Fragmento de PHP: convierta la tarifa plana en una tarifa de envío con multiplicador de peso
Antes de entrar en la codificación, primero algunas notas. El siguiente fragmento no funcionará a menos que :
- ingrese el peso para cada producto en su tienda
- cree una Tarifa Plana y obtenga su ID ("84" en el ejemplo a continuación)
- defina su fórmula de envío por peso ($5 multiplicado por kilos redondeados en el ejemplo a continuación. Mi fragmento devolverá $5 si el peso del carrito es de 1,4 kg, $10 si el peso del carrito es de 1,6 kg, $15 si el peso del carrito es de 3,1 kg y así sucesivamente... Ajustar como según las especificaciones de su proyecto)
Es posible que el siguiente fragmento no funcione completamente si la tarifa plana está sujeta a impuestos y si tiene impuestos habilitados en su tienda. Es posible que necesite un pequeño ajuste para que funcione.
También asegúrese de vaciar su carrito antes de la prueba: cada vez que trabaje con tarifas de envío, debe borrar su "sesión" y vaciar el carrito debería activarlo automáticamente.
/** * @snippet Flat Rate = Shipping by Weight * @how-to Get CustomizeWoo.com FREE * @sourcecode https://businessbloomer.com/?p=114302 * @author Rodolfo Melogli * @compatible WooCommerce 3.5.4 * @donate $9 https://businessbloomer.com/bloomer-armada/ */ add_filter( 'woocommerce_package_rates' , 'bbloomer_woocommerce_tiered_shipping' , 999, 2 ); function bbloomer_woocommerce_tiered_shipping( $rates , $package ) { $cart_weight = WC()->cart->cart_contents_weight; if ( isset( $rates [ 'flat_rate:84' ] ) ) { $rates [ 'flat_rate:84' ]->cost = 5 * round ( $cart_weight ); } return $rates ; } |
Deja una respuesta