我使用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