问题描述
我正在尝试自动触发优惠券,以专门用于购物车中有4件物品的优惠券.
I am trying to automatically trigger a coupon to be applied in the cart specifically for when there are 4 items in the cart.
该优惠券是在网站"tasterbox"
我正在使用此答案代码的修订版本:
根据产品类别自动添加WooCommerce优惠券代码
I am using an amended version from this answer code:
Add WooCommerce coupon code automatically based on product categories
这是我的代码版本:
add_action( 'woocommerce_before_calculate_totals', 'wc_auto_add_coupons', 10, 1 );
function wc_auto_add_coupons( $cart_object ) {
// Coupon code
$coupon = 'tasterbox';
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initialising variables
$is_match = false;
$taster_item_count = 4;
// Iterating through each cart item
foreach ( WC()->cart->get_cart() as $cart_item ) {
// If cart items match 4
if( $cart->cart_contents_count == $taster_item_count ){
$is_match = true; // Set to true
break; // stop the loop
}
}
// If conditions are matched add the coupon discount
if( $is_match && ! $cart_object->has_discount( $coupon )){
// Apply the coupon code
$cart_object->add_discount( $coupon );
// Optionally display a message
wc_add_notice( __('TASTER BOX ADDED'), 'notice');
}
// If conditions are not matched and coupon has been appied
elseif( ! $has_category && $cart_object->has_discount( $coupon )){
// Remove the coupon code
$cart_object->remove_coupon( $coupon );
// Optionally display a message
wc_add_notice( __('SORRY, TASTERBOX NOT VALID'), 'alert');
}
}
但是,当购物车中有4件物品时,我无法自动应用优惠券.似乎做起来很简单,但是我被困住了.
However I can not get it to auto apply the coupon when there are 4 items in the cart. It seems like something simple to do, but I'm stuck.
任何帮助表示赞赏.
推荐答案
您的代码中有一些小错误.请尝试以下操作:
There is some little mistakes and errors in your code. Try the following instead:
add_action( 'woocommerce_before_calculate_totals', 'auto_add_coupon_based_on_cart_items_count', 25, 1 );
function auto_add_coupon_based_on_cart_items_count( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Setting and initialising variables
$coupon = 'tasterbox'; // <=== Coupon code
$item_count = 4; // <=== <=== Number of items
$matched = false;
if( $cart->cart_contents_count >= $item_count ){
$matched = true; // Set to true
}
// If conditions are matched add coupon is not applied
if( $matched && ! $cart->has_discount( $coupon )){
// Apply the coupon code
$cart->add_discount( $coupon );
// Optionally display a message
wc_add_notice( __('TASTER BOX ADDED'), 'notice');
}
// If conditions are not matched and coupon has been appied
elseif( ! $matched && $cart->has_discount( $coupon )){
// Remove the coupon code
$cart->remove_coupon( $coupon );
// Optionally display a message
wc_add_notice( __('SORRY, TASTERBOX NOT VALID'), 'error');
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试,可以正常工作.
Code goes in function.php file of your active child theme (or active theme). Tested and works.
这篇关于根据Woocommerce中特定购物车数量自动应用优惠券的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!