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

Check if ANY coupon code is applied in woocommerce

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

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

提前致谢。

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

这样使用:

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

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

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

这是一个更好的方法。我们可以访问购物车 applied_coupons 的 public 变量。它包含一组应用于购物车的优惠券代码。我们可以这样使用它...

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

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

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