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);
// 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);
// 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 分享
Death comes to all, but great achievements raise a monument which shall endure until the sun grows old.
死亡无人能免,但非凡的成就会树起一座纪念碑,它将一直立到太阳冷却之时
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容