是的,这也有可能,让每个车项目自定义计算和单独更换其价格(符合条件和计算),使用woocommerce_before_calculate_totals
行动钩勾住了自定义的功能。
这是代码:
add_action('woocommerce_before_calculate_totals', 'custom_discounted_cart_item_price', 10, 1);
function custom_discounted_cart_item_price($cart_object) {
$discount_applied = false;
// Set Here your targeted quantity discount
$t_qty = 12;
// Iterating through each item in cart
foreach ($cart_object->get_cart() as $item_values) {
## Get cart item data
$item_id = $item_values['data']->id; // Product ID
$item_qty = $item_values['quantity']; // Item quantity
$original_price = $item_values['data']->price; // Product original price
// Getting the object
$product = new WC_Product($item_id);
// CALCULATION FOR EACH ITEM
// when quantity is up to the targetted quantity and product is not on sale
if($item_qty >= $t_qty && !$product->is_on_sale()){
for($j = $t_qty, $loops = 0; $j <= $item_qty; $j += $t_qty, $loops++);
$modulo_qty = $item_qty % $t_qty; // The remaining non discounted items
$item_discounted_price = $original_price * 0.9; // Discount of 10 percent
$total_discounted_items_price = $loops * $t_qty * $item_discounted_price;
$total_normal_items_price = $modulo_qty * $original_price;
// Calculating the new item price
$new_item_price = ($total_discounted_items_price + $total_normal_items_price)/$item_qty;
// Setting the new price item
$item_values['data']->price = $new_item_price;
$discount_applied = true;
}
}
// Optionally display a message for that discount
if ($discount_applied)
wc_add_notice(__('A quantity discount has been applied on some cart items.', 'my_theme_slug'), 'success');
}
本作正是您在车中的每个项目分别预计折扣(基于它的量),而不是对正在销售项目。但是,您不会得到任何标签(文本),表明购物车的订单项中有折扣。
可选我显示的通知时,折扣应用于一些购物车的物品......
代码放在您的活动子主题(或主题)的function.php文件或也以任何插件文件。
此代码已经过测试并可正常工作。
非常感谢你,这是完美的。 – Phovos