Aplicar descuento basado en cantidad de productos en WooCommerce
En WooCommerce, puedes implementar reglas de descuento avanzadas según la cantidad de productos en el carrito. Aunque existen plugins para lograr esto, hacerlo mediante código personalizado te da más flexibilidad y control. En este artículo, aprenderás a aplicar descuentos automáticos usando PHP.
Usar el hook woocommerce_cart_calculate_fees
El hook woocommerce_cart_calculate_fees
permite añadir cargos adicionales o descuentos al carrito de compras. Usaremos este hook para implementar el descuento basado en la cantidad de productos.
Ejemplo básico: Descuento para compras de 10 o más productos
<?php add_action( 'woocommerce_cart_calculate_fees', 'applyQuantityBasedDiscount' ); function applyQuantityBasedDiscount( $cart ) { // Asegúrate de que no se ejecute en el backend. if ( is_admin() && !defined( 'DOING_AJAX' ) ) { return; } // Cantidad mínima para aplicar el descuento. $minQuantity = 10; // Descuento en porcentaje. $discountPercentage = 10; // Calcula la cantidad total de productos en el carrito. $totalQuantity = $cart->get_cart_contents_count(); if ( $totalQuantity >= $minQuantity ) { // Calcula el descuento. $discount = $cart->subtotal * ( $discountPercentage / 100 ); // Aplica el descuento como un cargo negativo. $cart->add_fee( __( 'Quantity Discount', 'your-text-domain' ), -$discount ); } }
Descuentos basados en rangos de cantidad
Puedes ofrecer descuentos diferentes según la cantidad de productos en el carrito.
Ejemplo: Descuentos progresivos
<?php add_action( 'woocommerce_cart_calculate_fees', 'applyTieredQuantityDiscount' ); function applyTieredQuantityDiscount( $cart ) { if ( is_admin() && !defined( 'DOING_AJAX' ) ) { return; } $totalQuantity = $cart->get_cart_contents_count(); $discount = 0; // Define los rangos de descuento. if ( $totalQuantity >= 20 ) { $discount = $cart->subtotal * 0.20; // 20% de descuento para 20 o más productos. } elseif ( $totalQuantity >= 10 ) { $discount = $cart->subtotal * 0.10; // 10% de descuento para 10-19 productos. } if ( $discount > 0 ) { $cart->add_fee( __( 'Tiered Discount', 'your-text-domain' ), -$discount ); } }
Descuentos basados en un producto específico
Si deseas aplicar descuentos solo cuando hay múltiples unidades de un producto específico, puedes hacerlo revisando los elementos del carrito.
Ejemplo: Descuento por comprar 5 o más de un producto específico
<?php add_action( 'woocommerce_cart_calculate_fees', 'applyProductSpecificDiscount' ); function applyProductSpecificDiscount( $cart ) { if ( is_admin() && !defined( 'DOING_AJAX' ) ) { return; } // ID del producto específico. $targetProductId = 123; // Cambia esto por el ID de tu producto. $minQuantity = 5; // Cantidad mínima para el descuento. $discountPercentage = 15; // Descuento en porcentaje. foreach ( $cart->get_cart() as $cartItem ) { if ( $cartItem['product_id'] == $targetProductId && $cartItem['quantity'] >= $minQuantity ) { // Calcula el descuento para el producto específico. $discount = ( $cartItem['line_total'] * $discountPercentage ) / 100; // Aplica el descuento. $cart->add_fee( __( 'Product Discount', 'your-text-domain' ), -$discount ); break; } } }
Crear descuentos basados en la cantidad de productos en WooCommerce es una excelente forma de incentivar compras más grandes y aumentar las ventas. Con los ejemplos anteriores, puedes personalizar los descuentos para satisfacer las necesidades de tu tienda.
Si tienes preguntas o necesitas más ejemplos, ¡no dudes en pedir ayuda! 😊