// 检查购物车中是否包含指定的购买产品和赠品产品
function check_and_apply_coupon() {
// 获取购物车中的项目
$cart_items = WC()->cart->get_cart();
// 设置要检查的产品ID
$product_id_to_check = 213976;
// 初始化一个变量来标识产品是否存在于购物车中
$product_found = false;
// 遍历购物车中的每个项目
foreach ($cart_items as $cart_item_key => $cart_item) {
// 检查产品ID是否匹配
if ($cart_item['variation_id'] == $product_id_to_check) {
// 找到了指定的产品
$product_found = true;
break;
}
}
// 如果找到了指定产品,确保购物车没有应用其他优惠券,然后应用优惠券
if ($product_found) {
// 应用优惠券代码
$coupon_code = '9FREAMBN'; // 替换为你的优惠券代码
// 检查购物车是否已经应用了该优惠券
$applied_coupons = WC()->cart->get_applied_coupons();
if (!in_array($coupon_code, $applied_coupons)) {
// 移除已应用的所有优惠券
WC()->cart->remove_coupons();
// 应用优惠券
WC()->cart->apply_coupon($coupon_code);
}else {
// 如果购物车中没有找到指定产品,移除优惠券
WC()->cart->remove_coupons(array('9FREAMBN'));
}
}
}
// 在购物车页面和结账页面的顶部执行检查和应用优惠券
add_action('woocommerce_before_cart', 'check_and_apply_coupon');
add_action('woocommerce_before_checkout_form', 'check_and_apply_coupon');
逻辑说明
实现逻辑:后台先创建优惠卷,然后正好20块钱,适用于所有的case: 259,257,255,253,243,239,这些数字是case的id,然后获取到购物车里面的所有产品,如果包含32A black extension这个产品和一个case,20块钱的优惠卷就可以自动使用,他如果把32A black extension,从购物车删除,优惠卷也自动清空,为了避免薅羊毛,他单独购买case,然后单独去填入优惠卷代码去买,我这个优惠卷设置了最低消费300块,也就是买16个case才能用这个优惠卷。
要获取 foreach 循环中每个购物车商品的产品 ID(对于简单产品):
foreach( WC()->cart->get_cart() as $cart_item ){
$product_id = $cart_item['product_id'];
}
可变产品,获取变体ID:
foreach( WC()->cart->get_cart() as $cart_item ){
$variation_id = $cart_item['variation_id'];
}
单独使用优惠卷
function check_and_apply_coupon() {
// 应用优惠券代码
$coupon_code = '9FREAMBN'; // 替换为你的优惠券代码
// 检查购物车是否已经应用了该优惠券
$applied_coupons = WC()->cart->get_applied_coupons();
if (!in_array($coupon_code, $applied_coupons)) {
WC()->cart->apply_coupon($coupon_code);
}
}
// 在购物车页面和结账页面的顶部执行检查和应用优惠券
add_action('woocommerce_before_cart', 'check_and_apply_coupon');
add_action('woocommerce_before_checkout_form', 'check_and_apply_coupon');
更多【前端-woocommerce买一,送小产品】相关视频教程:www.yxfzedu.com