WooCommerce 中基于购物车总数的累进折扣
Progressive discount based on cart total in WooCommerce
我正在尝试在 WooCommerce 购物车中自动应用 3 个不同的优惠券代码。
这是我的 code!
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
global $woocommerce;
$coupon_code5 = '5percent';
$coupon_code10 = '10percent';
$coupon_code55 = '15percent';
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
if ( $woocommerce->cart->cart_contents_total >= 50 && $woocommerce->cart->cart_contents_total < 100 && $woocommerce->cart->cart_contents_total != 100 ) {
$woocommerce->cart->add_discount( $coupon_code5 );
} elseif ($woocommerce->cart->cart_contents_total >= 100 && $woocommerce->cart->cart_contents_total < 150 && $woocommerce->cart->cart_contents_total != 150 ) {
$woocommerce->cart->add_discount( $coupon_code10 );
} else {
$woocommerce->cart->add_discount( $coupon_code15 );
}
}
此代码在添加 5% 折扣时似乎有效,但一旦我超过 100 欧元,它就不会应用 10% 折扣。
它只是继续应用 5% 的折扣。
更新:
这段代码很有魅力。归功于 LouicTheAztek
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_based_on_cart_total', 10, 1 );
function progressive_discount_based_on_cart_total( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_total = $cart_object->cart_contents_total; // Cart total
if ( $cart_total > 150.00 )
$percent = 15; // 15%
elseif ( $cart_total >= 100.00 && $cart_total < 150.00 )
$percent = 10; // 10%
elseif ( $cart_total >= 50.00 && $cart_total < 100.00 )
$percent = 5; // 5%
else
$percent = 0;
if ( $percent != 0 ) {
$discount = $cart_total * $percent / 100;
$cart_object->add_fee( "Discount ($percent%)", -$discount, true );
}
}
Using multiple coupons with different cart percentage discount is a nightmare as you have to handle when customer add new items, remove items, change quantities and add (or remove) coupons…
你最好使用下面这个简单的代码,它会根据购物车总金额添加购物车折扣 (这里我们使用负费用,即折扣):
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_based_on_cart_total', 10, 1 );
function progressive_discount_based_on_cart_total( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_total = $cart_object->cart_contents_total; // Cart total
if ( $cart_total > 150.00 )
$percent = 15; // 15%
elseif ( $cart_total >= 100.00 && $cart_total < 150.00 )
$percent = 10; // 10%
elseif ( $cart_total >= 50.00 && $cart_total < 100.00 )
$percent = 5; // 5%
else
$percent = 0;
if ( $percent != 0 ) {
$discount = $cart_total * $percent / 100;
$cart_object->add_fee( "Discount ($percent%)", -$discount, true );
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
此代码已经过测试并且有效。
我正在尝试在 WooCommerce 购物车中自动应用 3 个不同的优惠券代码。
这是我的 code!
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
global $woocommerce;
$coupon_code5 = '5percent';
$coupon_code10 = '10percent';
$coupon_code55 = '15percent';
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
if ( $woocommerce->cart->cart_contents_total >= 50 && $woocommerce->cart->cart_contents_total < 100 && $woocommerce->cart->cart_contents_total != 100 ) {
$woocommerce->cart->add_discount( $coupon_code5 );
} elseif ($woocommerce->cart->cart_contents_total >= 100 && $woocommerce->cart->cart_contents_total < 150 && $woocommerce->cart->cart_contents_total != 150 ) {
$woocommerce->cart->add_discount( $coupon_code10 );
} else {
$woocommerce->cart->add_discount( $coupon_code15 );
}
}
此代码在添加 5% 折扣时似乎有效,但一旦我超过 100 欧元,它就不会应用 10% 折扣。
它只是继续应用 5% 的折扣。
更新:
这段代码很有魅力。归功于 LouicTheAztek
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_based_on_cart_total', 10, 1 );
function progressive_discount_based_on_cart_total( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_total = $cart_object->cart_contents_total; // Cart total
if ( $cart_total > 150.00 )
$percent = 15; // 15%
elseif ( $cart_total >= 100.00 && $cart_total < 150.00 )
$percent = 10; // 10%
elseif ( $cart_total >= 50.00 && $cart_total < 100.00 )
$percent = 5; // 5%
else
$percent = 0;
if ( $percent != 0 ) {
$discount = $cart_total * $percent / 100;
$cart_object->add_fee( "Discount ($percent%)", -$discount, true );
}
}
Using multiple coupons with different cart percentage discount is a nightmare as you have to handle when customer add new items, remove items, change quantities and add (or remove) coupons…
你最好使用下面这个简单的代码,它会根据购物车总金额添加购物车折扣 (这里我们使用负费用,即折扣):
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_based_on_cart_total', 10, 1 );
function progressive_discount_based_on_cart_total( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_total = $cart_object->cart_contents_total; // Cart total
if ( $cart_total > 150.00 )
$percent = 15; // 15%
elseif ( $cart_total >= 100.00 && $cart_total < 150.00 )
$percent = 10; // 10%
elseif ( $cart_total >= 50.00 && $cart_total < 100.00 )
$percent = 5; // 5%
else
$percent = 0;
if ( $percent != 0 ) {
$discount = $cart_total * $percent / 100;
$cart_object->add_fee( "Discount ($percent%)", -$discount, true );
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
此代码已经过测试并且有效。