WooCommerce: Cómo aplicar descuentos por volumen con y sin plugins

Una de las estrategias más utilizadas en el comercio, no solo online, son los descuentos por volumen, un modo fantástico de conseguir más ventas en cada producto, pero esto ya lo sabías ¿verdad?

Por supuesto, con WooCommerce podemos aplicar esta estrategia también a nuestra tienda online, y no solo con plugins, sino con un sencillo código.

Descuentos por volumen con código

La cosa es sencilla, simplemente añade una función como esta al final del archivo functions.php del tema hijo activo o – si lo prefieres – en tu plugin de personalizaciones:

//Descuentos por volumen
add_action( 'woocommerce_before_calculate_totals', 'ayudawp_precio_segun_cantidad', 9999 );
function ayudawp_precio_segun_cantidad( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;

// Define aquí las reglas de descuento y los umbrales
$umbral1 = 11; // Cambiar precio si hay > 10 productos
$descuento1 = 0.05; // Rebaja del 5% si hay > 10 productos
$umbral2 = 21; // Cambiar precio si hay > 20 productos
$descuento2 = 0.1; // Rebaja del 10% si hay > 20 productos

foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
if ( $cart_item['quantity'] >= $umbral1 && $cart_item['quantity'] < $umbral2 ) {
$price = round( $cart_item['data']->get_price() * ( 1 - $descuento1 ), 2 );
$cart_item['data']->set_price( $price );
} elseif ( $cart_item['quantity'] >= $umbral2 ) {
$price = round( $cart_item['data']->get_price() * ( 1 - $descuento2 ), 2 );
$cart_item['data']->set_price( $price );
} 
}
}

En el código anterior, para cada umbral de precios superado ($umbralx = X) se aplicará el descuento especificado en la línea del descuento ($descuentox = X.X)

Y puedes añadir tantos umbrales y descuentos asociados como quieras, simplemente añadiendo sus líneas correspondientes y luego sus correspondientes if y elseif.

Una vez hayas editado el archivo de funciones a tu gusto, puedes comprobar su funcionamiento.

Siguiendo el ejemplo del código de arriba, para un producto que vale 127,04 € si pedimos 10 productos se multiplica por 10, como es normal, sin descuento alguno.

Ahora bien ¿qué pasará si compramos, por ejemplo, 21 productos iguales?

Pues que, si hemos añadido el código de ejemplo de arriba nos aplicará un descuento del 10% al precio.

Y así sucesivamente, según los umbrales y descuentos que hayamos configurado 🙂

¿Prefieres hacerlo con un plugin?

Claro, también puedes hacerlo.

En ese caso te recomiendo que uses WooCommerce Dynamic Pricing.

Este plugin no solo te permite aplicar reglas de descuento – o lo que sea – por volumen, también según la categoría, perfil de usuario, total en el carrito, por producto y mucho más.

Esto son solo algunos ejemplos…

Si quieres saber más sobre cómo utilizarlo para crear reglas personalizadas de precios mira este tutorial.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(4 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

1 comentario en “WooCommerce: Cómo aplicar descuentos por volumen con y sin plugins”

  1. Hola Fernando, buenas! Acabo de descubrir este post!!! creo que es parecido a lo que estoy necesitando, no el plugin, sino el código, te comento: la tienda que estoy montando es para vender productos de impresión sobre vinilo por medidas, estoy utilizando el plugin Woo Price Calculator que me va bastante bien para todo lo que necesito hacer. Lo que me falta y necesitaría a diferencia de lo que tu explicas, es que en lugar de realizar el descuento por la cantidad de productos lo haga sobre el precio final, pero si necesito manejar rangos, de echo 10 rangos… imagino que solo tendría que cambiar la llamada a la variable, en lugar de $cart, quizás $price, o algo parecido?… yo no controlo nada o muy poco de códigos, pero si acaso no estoy muy errado me podrías ayudar? Gracias y saludos!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido