【问题标题】:Check if coupon is applied in woo commerce检查优惠券是否适用于woocommerce
【发布时间】:2013-11-20 15:52:09
【问题描述】:

我需要找到一种方法来检查优惠券是否适用于 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 )

【问题讨论】:

  • 你的测试结果如何?
  • 好吧,在这个例子中,如果优惠券“12345”应用于购物车,那么它将回显“Yay it works”。我真正打算做的是在使用优惠券时将免费产品添加到购物车中,除了检查我的优惠券是否适用之外,我什么都没有。
  • 您的测试是否真的回显“YAY it works”?
  • 一旦我可以根据coupon_id对其进行测试,我无法检查应用的优惠券以查看优惠券'12345'是否应用于购物车。如果我可以使用上面的代码删除 === $coupon_id,但它适用于所有应用的优惠券,而不是我的特定优惠券

标签: php wordpress woocommerce


【解决方案1】:

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

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);
    }
}

【讨论】:

  • 这是Cart Class上的文档
  • 如果有人有兴趣,WC_Cart::get_applied_coupons() 返回一个优惠券代码字符串数组,这在文档中并不清楚。
【解决方案2】:
global $woocommerce;
if (!empty($woocommerce->cart->applied_coupons))
{
        //print_r($woocommerce->cart->applied_coupons); - keys of coupons here
}

【讨论】:

    【解决方案3】:

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

    WC()->cart->applied_coupons
    

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

    希望有帮助

    【讨论】:

      【解决方案4】:

      如果您知道优惠券代码但不知道优惠券发布 ID,则可以使用 realmag777's answermaiorano84's answer 的混搭。

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

      【讨论】:

        猜你喜欢
        • 2017-02-06
        • 1970-01-01
        • 2016-11-10
        • 2021-04-09
        • 2017-01-23
        • 1970-01-01
        • 2016-09-02
        • 2016-05-12
        • 1970-01-01
        相关资源
        最近更新 更多