Woocommerce优惠券在购物车和结帐页面上自动应用
我需要一个优惠券自动应用时,一个产品选择一个自定义字段(作为自定义字段复选框)。如果在该产品中勾选了该复选框,则woo commerce优惠券应自动应用于购物车和结帐页面。我已为其编写了自定义代码,其工作正常。但如果未选中该复选框,且客户来到结帐页面,则会有一个默认的应用优惠券代码输入框,如果客户把相同的优惠券放在一起,然后申请,优惠券就会被申请,但不应该。优惠券是在后端创建的 代码是:Woocommerce优惠券在购物车和结帐页面上自动应用,woocommerce,checkout,coupon,Woocommerce,Checkout,Coupon,我需要一个优惠券自动应用时,一个产品选择一个自定义字段(作为自定义字段复选框)。如果在该产品中勾选了该复选框,则woo commerce优惠券应自动应用于购物车和结帐页面。我已为其编写了自定义代码,其工作正常。但如果未选中该复选框,且客户来到结帐页面,则会有一个默认的应用优惠券代码输入框,如果客户把相同的优惠券放在一起,然后申请,优惠券就会被申请,但不应该。优惠券是在后端创建的 代码是: add_action( 'woocommerce_before_checkout_form', 'apply
add_action( 'woocommerce_before_checkout_form', 'apply_matched_coupons');
function apply_matched_coupons() {
$coupon_code = 'promo25';
if (WC()->cart->has_discount($coupon_code))
return;
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
// this is your product ID
$autocoupon = array(968);
if (in_array($cart_item['product_id'], $autocoupon)) {
if (isset($cart_item[WCPA_CART_ITEM_KEY])) {
foreach ($cart_item[WCPA_CART_ITEM_KEY] as $field) {
if ($field['name'] == 'carpet-steam1') {
WC()->cart->add_discount($coupon_code);
wc_print_notices();
}
}
}
}
}
}
当在结账页面上应用promo25时,不应应用优惠券。代码包含
- 检查优惠券是否有效
- 将其中一个WC_优惠券错误代码映射到消息字符串。()
函数我的优惠券是有效的($valid,$coupon){
$优惠券代码='promo25';
//如果选中复选框
如果($优惠券代码!='promo25'&复选框…){
$valid=false;
}
返回$valid;
}
添加过滤器('woocommerce\u优惠券有效','my\u优惠券有效',10,2);
函数优惠券错误($err,$err\u代码,$优惠券){
$优惠券代码='promo25';
// https://docs.woocommerce.com/wc-apidocs/source-class-WC_Coupon.html#947
如果($优惠券\代码==$优惠券->获取\代码()&&intval($err\代码===WC\优惠券::E\ WC\优惠券\无效\过滤)){
$err=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
}
返回$err;
}
添加_过滤器('woocommerce_优惠券错误','my_优惠券错误',10,3);
也许负费用是更好的选择?