Oferta SiteGround Black Friday

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.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 8

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

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

Sobre el autor

8 comentarios 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!!!

  2. Hola genial el code snippet, creo que es grandioso, pero lamentablemente no me funciona, está correcto el código? ¿Debo agregar algo nuevo? ¿O activar alguna opción? Agradecería alguna orientación, saludos.

    Felicitaciones por el post.

  3. Hola,
    Felicidades por tus aportaciones, son geniales!
    El código que publicas de «Descuento por Volumen» lo puedo incorporar (pegar) directamente en mi plugin Code Snippets de mi sitio? O mejor lo hago directamente en el Tema.
    Qué recomiendas?
    Espero tu respuesta.
    Gracias y saludos,

  4. Hola Fernando, como agrego mas umbrales al codigo?
    Copie el código del umbral 2 para hacer un 3ro, pero no se como hacer lo mismo para las sección de if y elseif. Intente copiar desde el elseif del umbral 2 pero no me funciona.
    Espero tu respuesta.
    Gracias y saludos.

  5. Hola Fernando, ya pude resolver el problema de los umbrales pero queria saber como aplicar este código a la cantidad final del pedido, para que aplique cuando compran varios productos diferentes. Por el momento solo aplica estos descuentos si un producto en especifico llega a cierta cantidad.

    Gracias.

Deja un comentario

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

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio