如果 WooCommerce 购物车至少包含 X 产品,则自动添加百分比折扣
Automatically add a percentage discount if WooCommerce cart contains at least X products
我正在尝试创建一个自动折扣,当购物车包含至少三个或更多产品时,该折扣就会生效。
如果是,无论客户是否登录,都应给予 10% 的折扣。
这是我试图开始工作的代码(没有成功)。
add_action( 'woocommerce_cart_calculate_fees', 'wc_discount_when_more_than_three', 10, 1 );
function wc_discount_when_more_than_three( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$percentage = 10; // 10% discount when cart has a minimum of three products
$discount = 0;
// check all cart items
foreach ( $cart->get_cart() as $cart_item ) {
// when quantity is more than 3
if( $cart_item['quantity'] > 3 ) {
// give 10% discount on the subtotal
$discount = $percentage / 100;
}
}
if( $discount > 0 )
$cart->add_fee( __( '10% OFF', 'woocommerce' ) , -$discount );
}
这取决于您是要统计购物车中的产品数量还是要统计产品数量(内容)。
在我的回答中,我已经说明了两者,uncomment/delete/adjust 满足您的需求。
function action_woocommerce_cart_calculate_fees( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Percentage
$percentage = 10;
/* Count contents in cart
*
* Product A: quantity in cart: 4
* Product B: quantity in cart: 1
* Product C: quantity in cart: 2
*
* count = 7
*
*/
//$count = $cart->cart_contents_count;
/* Count products in cart
*
* Product A
* Product B
* Product C
*
* count = 3
*/
$count = count( $cart->get_cart() );
// Greater than
if ( $count > 3 ) {
// Get subtotal
$subtotal = $cart->subtotal;
// Calculate
$discount = ( $subtotal / 100 ) * $percentage;
// Give % discount on the subtotal
$cart->add_fee( sprintf( __( '%s OFF', 'woocommerce'), $percentage . '%' ), -$discount );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1 );
我正在尝试创建一个自动折扣,当购物车包含至少三个或更多产品时,该折扣就会生效。
如果是,无论客户是否登录,都应给予 10% 的折扣。
这是我试图开始工作的代码(没有成功)。
add_action( 'woocommerce_cart_calculate_fees', 'wc_discount_when_more_than_three', 10, 1 );
function wc_discount_when_more_than_three( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$percentage = 10; // 10% discount when cart has a minimum of three products
$discount = 0;
// check all cart items
foreach ( $cart->get_cart() as $cart_item ) {
// when quantity is more than 3
if( $cart_item['quantity'] > 3 ) {
// give 10% discount on the subtotal
$discount = $percentage / 100;
}
}
if( $discount > 0 )
$cart->add_fee( __( '10% OFF', 'woocommerce' ) , -$discount );
}
这取决于您是要统计购物车中的产品数量还是要统计产品数量(内容)。
在我的回答中,我已经说明了两者,uncomment/delete/adjust 满足您的需求。
function action_woocommerce_cart_calculate_fees( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Percentage
$percentage = 10;
/* Count contents in cart
*
* Product A: quantity in cart: 4
* Product B: quantity in cart: 1
* Product C: quantity in cart: 2
*
* count = 7
*
*/
//$count = $cart->cart_contents_count;
/* Count products in cart
*
* Product A
* Product B
* Product C
*
* count = 3
*/
$count = count( $cart->get_cart() );
// Greater than
if ( $count > 3 ) {
// Get subtotal
$subtotal = $cart->subtotal;
// Calculate
$discount = ( $subtotal / 100 ) * $percentage;
// Give % discount on the subtotal
$cart->add_fee( sprintf( __( '%s OFF', 'woocommerce'), $percentage . '%' ), -$discount );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1 );