Agregue condicionalmente un descuento programáticamente a Woocommerce 3

1 minuto de lectura

avatar de usuario
Sr. Jo

Estoy buscando una manera de crear un cupón mediante programación durante el pago y eliminarlo cuando finalice el pago. Esto debe hacerse en base a un sistema de bonificación donde verifico si el cliente puede obtener una bonificación o no. Lo importante es que no quiero hacerlo como un cupón normal porque los clientes no deberían poder agregarlo sabiendo el código.

Solo encontré una solución para agregar un cupón o crearlo mediante programación. No encontré nada sobre un cupón temporal durante un pago.

También es importante que este cupón se pueda combinar con otro cupón y no con más.

Este es mi código:

if ( get_discount_points() < 100 ) {
    //Customer has bonus status 1
} elseif ( get_discount_points() < 200 ) {
    //Customer has bonus status 2
} else {
    //Customer has bonus status x

por el porcentaje de descuento }

Entonces, ¿es esto posible?

Para obtener algo simple, podría usar una tarifa negativa en su lugar (donde cada punto de paso aumenta el porcentaje de descuento) me gusta:

function get_customer_discount(){
    if( $points = get_discount_points() ){
        if ( $points < 100 ) {
            return 1; // 1 % discount
        } elseif ( $points < 200 ) {
            return 2; // 2.5 % discount
        } else {
            return 4; // 5 % discount
        }
    } else {
        return false;
    }
}


add_action( 'woocommerce_cart_calculate_fees', 'custom_discount', 10, 1 );
function custom_discount( $cart ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Only for 2 items or more
    if( $percentage = get_customer_discount() ){
        $discount = WC()->cart->get_subtotal() * $percentage / 100;

        // Apply discount to 2nd item for non on sale items in cart
        if( $discount > 0 )
            $cart->add_fee( sprintf( __("Discount %s%%"), $percentage), -$discount );
    }
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad