我一直在对购物车项目小计级别的舍入进行广泛的研究,但我一直无法找到解决方案。
我想做的是在应用折扣后对产品小计进行四舍五入。然后通过将所有产品小计相加来计算购物车总计和总计。
我尝试过不同的钩子,例如:
如果您有任何建议或解决方案,我将非常感谢您的帮助。谢谢!
经过一番尝试,我想出了这个:
add_action('woocommerce_before_calculate_totals', 'my_woocommerce_calculate_totals', 10, 1);
function my_woocommerce_calculate_totals($cart) {
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
// Loop over $cart items
foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
// Get line specific data
$itemQuantity = $cart_item['quantity'];
$productObject = $cart_item['data']; // Get the product object
$productPrice = $productObject->get_price();
$regular_price = $productObject ->get_regular_price();
// Calculate new price per item
$discount = ($regular_price - $productPrice) / $regular_price;
$new_price = (round($productPrice * $itemQuantity) / $itemQuantity) / (1 - $discount);
// Set new price
$productObject->set_price($new_price);
}
}
理论是计算项目小计并将其四舍五入到最接近的整数。然后根据四舍五入的项目小计重新计算新价格。我做了一些测试,这个函数显示了正确的四舍五入小计和总计。但产品价格将会有所调整。
对此解决方案有什么评论吗?会造成什么问题吗?提前非常感谢您。