WooCommerce中的优惠券验证例子

我们有一个需求:coupon1和coupon2是两个优惠券,coupon1和coupon2都能单独使用,并且coupon1只能与coupon2一起使用,同理coupon2也只能与coupon1一起使用。

代码如下:

// coupon1与 coupon2优惠券的使用:coupon1只能与coupon2一起使用,同理coupon2也只能与coupon1一起使用。
add_filter("woocommerce_coupon_is_valid",function($status,$coupon){
    $cart = WC()->cart;
    $applied_coupons = $cart->get_applied_coupons();
    $ccoupon = $coupon->get_code();
    if(count($applied_coupons) === 0){//没有使用优惠券
        return $status;
    }
    if(count($applied_coupons) === 1){//使用了一张优惠券
        if($ccoupon == "coupon1" or $ccoupon == "coupon2"){//如果是应用coupon1或者如果是应用coupon2
            if (is_array($applied_coupons)) {
                    // 有且只有coupon2优惠券时能使用
                    if(isset($applied_coupons[0])){
                        if (($applied_coupons[0] === "coupon1" or $applied_coupons[0] === "coupon2")) {
                            return $status;
                        }
                    }
            }else{
                return $status;
            }
    
        }else{//如果是应用其他优惠券
            if (is_array($applied_coupons)) {
                if(!(in_array("coupon1",$applied_coupons) or in_array("coupon2",$applied_coupons ))){// 没有应用coupon1或者coupon2
                    return $status;
                }
            }else{
                return $status;
            }
        }
        add_filter("woocommerce_coupon_error",function(){return "Coupon cannot be used, please remove existing coupon before applying.";});
        return false;
    }elseif(count($applied_coupons) === 2){//使用了两张优惠券
        if($ccoupon == "coupon1" or $ccoupon == "coupon2"){//如果是应用coupon1或者如果是应用coupon2
            if (is_array($applied_coupons)) {
                // 有且只有coupon2优惠券时能使用
                if (in_array("coupon1",$applied_coupons) and in_array("coupon2",$applied_coupons )) {
                    return $status;
                }
            }else{
                return $status;
            }
    
        }else{//如果是应用其他优惠券
            if (is_array($applied_coupons)) {
                if(!(in_array("coupon1",$applied_coupons) or in_array("coupon2",$applied_coupons ))){// 没有应用coupon1或者coupon2
                    return $status;
                }
            }else{
                return $status;
            }
        }
        add_filter("woocommerce_coupon_error",function(){return "Coupon cannot be used, please remove existing coupon before applying.";});
        return false;
    }
    return $status;
},10,2);
© 版权声明
THE END
喜欢就支持一下吧
点赞4 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容