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! 😊

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x