[英]Cart discount based on cart item count and only for items that are not in sale
In WooCommerce, I would like to give a discount of 10% specifically for those products that are not on sale. 在WooCommerce中,我想特别针对那些没有销售的产品给予10%的折扣。 If cart item count is 5 or more items and not on sale, then I give a discount of 10%.
如果购物车商品数量为5件或更多商品且未开售,则我给予10%的折扣。
I use the following code to get a discount based on cart item count restriction here: 我使用以下代码根据购物车项目计数限制获得折扣:
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');
/**
* Add custom fee if more than three article
* @param WC_Cart $cart
*/
function add_custom_fees( WC_Cart $cart ){
if( $cart->cart_contents_count < 5 ){
return;
}
// Calculate the amount to reduce
$discount = $cart->subtotal * 0.1;
$cart->add_fee( '10% discount', -$discount);
}
But I don't know how to apply the discount only for items that are not in sale. 但我不知道如何仅对未售出的商品应用折扣。 How can I achieve it?
我怎样才能实现它?
Thanks. 谢谢。
Here is a custom hooked function that will apply to cart a discount , if there is 5 or more items in cart and no products on sale: 这是一个自定义挂钩功能,如果购物车中有5件或更多商品且没有销售产品,将适用于购物车折扣 :
add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1);
function custom_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only when there is 5 or more items in cart
if( $cart->get_cart_contents_count() >= 5):
// Initialising variable
$is_on_sale = false;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Getting an instance of the product object
$product = $cart_item['data'];
// If a cart item is on sale, $is_on_sale is true and we stop the loop
if($product->is_on_sale()){
$is_on_sale = true;
break;
}
}
## Discount calculation ##
$discount = $cart->subtotal * -0.1;
## Applied discount (no products on sale) ##
if(!$is_on_sale )
$cart->add_fee( '10% discount', $discount);
endif;
}
This code goes in function.php file of your active child theme (or theme) or also in any plugin file. 此代码位于活动子主题(或主题)的function.php文件中,或者也可以放在任何插件文件中。
This code is tested and works perfectly. 此代码经过测试并完美运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.