我使用WooCommerce版本3.0+以及由用户角色插件价格%折扣价格。WooCommerce四舍五入之前计算总计
我们在商店里有一个项目是£89.55。如果申请30%的折扣,这将变成62.685英镑。如果您订购6则价值为376.11英镑。
最终数字是正确的。
但是,由于我将WC设置设为2dp,商品价格显示为62.69英镑。因此发票不正确显示为£62.69 x 6 =£376.11。
我已经想过使用woocommerce_before_calculate_totals喜欢从这里:
Dynamic cart item pricing not working on orders in WooCommerce 3.0+
我的代码是:
add_action('woocommerce_before_calculate_totals', 'adding_custom_price', 10, 1);
function adding_custom_price($cart_obj) {
if (is_admin() && ! defined('DOING_AJAX'))
return;
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$new_price = round($cart_item['data']->price,2,PHP_ROUND_HALF_UP);
$cart_item['data']->set_price($new_price);
#echo $new_price;
}
}
从回声$ NEW_PRICE输出为62.69。但看起来set_price不起作用,因为购物车中的价值仍然显示为62.685。
因此,例如,如果我做62.69 x 2的小计是125.37。
任何想法为什么set_price不起作用?我看到这一点:
Woocommerce: $cart_item['data']->set_price is not working inside custom plugin
但在那里回答不工作,要么。
任何帮助非常感谢。
感谢您的代码。看来set_price仍然不起作用,即使我添加了测试值。所以这不是一个四舍五入的问题 - 任何地方的购物车总额都不会显示额外的价值,例如0.2甚至100。但get_price正在工作,因为当我回应时,它确实显示了正确的舍入值。 – rav
@rav我已经在2个不同的服务器上测试过这个代码,它工作的很好。如果您在挂钩函数中使用'$ cart_item ['data'] - > set-price(25);'您将看到所有购物车商品都以25的价格更新。因此,这种方法在'woocommerce_before_calculate_totals钩子。 – LoicTheAztec
好吧,如上所述使用set_price进行测试 - 它按照您的说法工作。我身边的问题是由于使用用户角色插件的Woocommerce价格。当我停用它时,价格显示为25.切换它将覆盖我的代码。有没有办法可以覆盖这个?否则,我会做一些研究,寻找替代插件。 – rav