检查是不是在 woocommerce 中应用了任何优惠券代码

Posted

技术标签:

【中文标题】检查是不是在 woocommerce 中应用了任何优惠券代码【英文标题】:Check if ANY coupon code is applied in woocommerce检查是否在 woocommerce 中应用了任何优惠券代码 【发布时间】:2016-05-12 05:00:05 【问题描述】:

如何在结帐时检查是否有任何优惠券应用于 woocommerce 中的产品?

我看到的所有内容都会检查 ID 或 slug 或它们的数组,但我想在结帐时根据是否有优惠券、任何优惠券来调整某些字段。

提前致谢。

【问题讨论】:

【参考方案1】:

如果您想查看特定优惠券,@Reigel 的答案就是解决方案。但是,要检查是否已应用任何优惠券,以下代码将完成工作。

if( WC()->cart->get_coupons() ) echo "Coupon applied";

【讨论】:

这行得通。我还尝试了@Reigel,它也有效。谢谢你们。【参考方案2】:

您可以使用购物车的has_discount() 功能。这需要优惠券代码作为参数。

像这样使用它:

if (WC()->cart->has_discount('test1')) 
   // cart has coupon test1 applied


按照@Anand 的建议,您可以使用WC()->cart->get_coupons()。如果购物车中有任何优惠券,这将返回所有优惠券。

但是,当我检查了 woocommerce 插件源代码时,get_coupons() 使用的是WP_Query。 如果没有其他更好的方法,真的没什么大不了的。

这里有一个更好的方法。我们可以访问购物车的公共变量applied_coupons。它包含一系列应用于购物车的优惠券代码。我们可以这样使用...

$has_coupons = count(WC()->cart->applied_coupons)>0?true:false;
if($has_coupons) 
   // cart has coupons

【讨论】:

这不检查特定的优惠券(即'test1'优惠券)吗?我不需要这么具体的东西。 啊,是的,对不起,但是有人已经建议了WC()->cart->get_coupons() ,这是正确的

以上是关于检查是不是在 woocommerce 中应用了任何优惠券代码的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce:检查商品是不是已在购物车中

检查客户是不是已经在 WooCommerce 中购买过东西

如何在 Woocommerce 中检查产品是不是具有特定的产品属性

检查 WooCommerce 是不是处于活动状态以及使用的版本

检查自 Woocommerce 订单下达以来是不是已过去 24 小时

检查 Woocommerce 运输区域的邮政编码