【发布时间】:2021-05-22 12:39:05
【问题描述】:
我通过自定义仪表板表单以编程方式将优惠券应用于订阅,因此用户无需通过标准购物车来应用它。它所做的只是将他们输入的代码输入到输入中,然后将其应用于子。
有没有一种方法可以像购物车执行大量验证一样针对用户验证优惠券(例如,如果优惠券已被使用,可以是重复使用的优惠券等)。
有没有办法挂钩该验证,而不是我手动写出所有不同的检查?这样做感觉不对,而且很可能会漏网。
我在那里进行了一些基本检查,例如是否存在优惠券,然后检查使用限制。
$subscription = new WC_Subscription( $_REQUEST['sub_id'] );
$coupon_code = $_REQUEST['voucher_code'];
$coupon = new WC_Coupon( $coupon_code );
if ($coupon->is_valid()) {
$coupon_type = $coupon->get_discount_type();
$coupon_amount = $coupon->get_amount();
$total = $subscription->get_total();
if($coupon->get_usage_count() < $coupon->get_usage_limit() || $coupon->get_usage_limit() == ""){
$strcode = strtolower($coupon_code);
foreach ( $coupons as $coupon ) {
if($coupon->get_code() == $strcode){
$subscription->remove_coupon( $coupon->get_code() );
}
}
$subscription->apply_coupon( $coupon_code );
$note = "Coupon " . $coupon_code . " has been applied to subscription";
$subscription->add_order_note( $note );
$subscription->calculate_totals();
}
}
【问题讨论】:
标签: php validation woocommerce coupon woocommerce-subscriptions