以编程方式向Woocommerce 3有条件地添加折扣

时间:2018-12-25 22:03:00

标签: php wordpress woocommerce

我正在寻找一种在结帐时以编程方式创建优惠券并在结帐后将其删除的方法。这需要在奖励系统的基础上完成,在该系统中,我检查是否允许客户获得奖励。重要的是,我不想将其作为普通的优惠券,因为客户不应该在知道代码的情况下附加它。

我只找到添加优惠券或以编程方式创建优惠券的解决方案。在一次结帐时,我没有找到关于临时优惠券的任何信息。

同样重要的是,此优惠券只能与另一张优惠券一起使用,而不能与其他优惠券一起使用。

这是我的代码:

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

按折扣百分比     }

那有可能吗?

1 个答案:

答案 0 :(得分:1)

要简单起见,您可以使用负费用代替(每个步骤点都会增加折扣百分比),例如:

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 );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。