我需要找到一种方法来检查优惠券是否适用于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 )
答案 0 :(得分:7)
从你的例子中,这样的事情可能有用。这是未经测试的,但应该朝着正确的方向迈出一步:
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);
}
}
答案 1 :(得分:2)
global $woocommerce;
if (!empty($woocommerce->cart->applied_coupons))
{
//print_r($woocommerce->cart->applied_coupons); - keys of coupons here
}
答案 2 :(得分:1)
这可能是一个年龄问题,但一个简单的解决方案是使用
WC()->cart->applied_coupons
此应用优惠券的返回数组列表,您可以使用foreach,for或in_array来检查应用的优惠券。
希望有所帮助
答案 3 :(得分:0)
如果您知道优惠券代码,但不知道优惠券帖子ID,则可以使用realmag777's answer和maiorano84'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);
}