检查优惠券是否应用于 WooCommerce 中的购物车

问题描述 投票:0回答:5

我需要找到一种方法来检查优惠券是否适用于 WooCommerce 结账,如果是这样,我想做点什么。 我尝试四处寻找这个问题但找不到解决方案。

这是我正在尝试的精简版本:

add_action('woocommerce_before_cart_table', 'apply_product_on_coupon');
function apply_product_on_coupon( ) {
    global $woocommerce;
    $coupon_id = '12345';
        
        if( $woocommerce->cart->applied_coupons === $coupon_id ) {
        echo 'YAY it works';
    }
}

那么这不是检查购物车中是否存在优惠券的正确方法吗?

if( $woocommerce->cart->applied_coupons === $coupon_id )

php wordpress woocommerce cart coupon
5个回答
23
投票

从你的例子来看,这样的事情可能会起作用。这未经测试,但应该会让您朝着正确的方向迈出一步:

add_action('woocommerce_applied_coupon', 'apply_product_on_coupon');
function apply_product_on_coupon( ) {
    global $woocommerce;
    $coupon_id = '12345';
    $free_product_id = 54321;

    if(in_array($coupon_id, $woocommerce->cart->get_applied_coupons())){
        $woocommerce->cart->add_to_cart($free_product_id, 1);
    }
}

6
投票
global $woocommerce;
if (!empty($woocommerce->cart->applied_coupons))
{
        //print_r($woocommerce->cart->applied_coupons); - keys of coupons here
}

2
投票

这可能是一个年龄问题,但一个简单的解决方案是使用

WC()->cart->applied_coupons

此函数返回已申请优惠券的数组列表,您可以使用 foreach、for 或 in_array 来查看已申请的优惠券。

希望有帮助


2
投票

如果您知道优惠券代码但不知道优惠券帖子 ID,则可以使用 realmag777 的答案maiorano84 的答案 的混搭。

function CheckCouponIsApplied($cpn_code)
{
    global $woocommerce;
    $lowercasecouponcode = strtolower($cpn_code); //ENSURE LOWERCASE TO MATCH WOOCOMMERCE NORMALIZATION
    return in_array($lowercasecouponcode, $woocommerce->cart->applied_coupons);
}

0
投票

也可以使用

wc_get_coupon_id_by_code
功能。

$couponCode = 'Hello World';

// Returns the coupon ID, 0 if coupon ID is invalid.
$couponID = wc_get_coupon_id_by_code($couponCode);

if($couponID) {
  echo 'Coupon code already applied. ' . $couponID;
} else {
   echo 'Coupon code not found';
}
© www.soinside.com 2019 - 2024. All rights reserved.