Woocommerce-使用购物车商品和优惠券数据验证优惠券

问题描述

我正在验证购物车中的优惠券,而不是整个订单。如果购物车中的物品超过可用优惠券数量限制,则优惠券会出错并向用户显示错误消息。

下面的代码检查购物篮中有多少特定商品,例如5。//可以正常工作
下面的代码还从正在使用的优惠券中返回数据。 //这不起作用

我希望返回的数据示例,以便我可以进行比较。
优惠券代码= 123
优惠券usage_count = 1
优惠券用法上限= 3
可用用法= 2

我已经有了另一个优惠券验证,可以检查用户设施预订是否在其酒店预订日期之间,效果很好。有人对我的验证有何建议吗?我似乎无法从输入的优惠券中返回数据。我是否使用正确的过滤器?谢谢

add_filter( 'woocommerce_coupon_is_valid','coupon_validation_quantity',10,2);
function coupon_validation_quantity($valid,$coupon) {

global $wpdb;
global $woocommerce;
global $product_items_in_cart;
$product_id = 493;
$product_items_in_cart = 0;

foreach ( WC()->cart->get_cart() as $cart_item ) {
    $cart_product_id = $cart_item['product_id'];
    if($cart_product_id == $product_id){
        $product_items_in_cart++;
    };
};

global $product_items_in_cart;
global $cart_coupon_code;
global $cart_coupon_count;
global $cart_coupon_limit;
global $cart_coupon_available;

$applied_coupons_code = WC()->cart->get_applied_coupons();
$coupon_in_cart = new WC_Coupon($applied_coupons_code);
$cart_coupon_code = $coupon_in_cart->get_code();
$cart_coupon_count = $coupon_in_cart->get_usage_count();
$cart_coupon_limit = $coupon_in_cart->get_usage_limit();
$cart_coupon_available = ($cart_coupon_limit - $cart_coupon_count);

print_r('products in cart -> ' . $product_items_in_cart . "\r\n"); // return correct
print_r('available -> ' . $cart_coupon_available . "\r\n"); // returns zero

if($product_items_in_cart > $cart_coupon_available){
    $valid = false;
};

return $valid;

}

优惠券错误处理

add_filter( 'woocommerce_coupon_error','coupon_validation_error_quantity',3);
function coupon_validation_error_quantity($err,$err_code,$coupon) {

global $wpdb;
global $woocommerce;

global $product_items_in_cart;
global $cart_coupon_available;

print_r('products in cart -> ' . $product_items_in_cart . "\r\n"); // returns correctly
print_r('available -> ' . $cart_coupon_available . "\r\n"); // returns Zero

if($product_items_in_cart > $cart_coupon_available && intval($err_code) === WC_COUPON::E_WC_COUPON_INVALID_FILTERED){
    $err = __( "Coupon $cart_coupon_code exceeds available usage. You have $cart_coupon_available available ","woocommerce" );
};

return $err;

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...