2017-07-19 105 views
1

因此,我目前正在銷售穀物和香料散裝的網站。WooCommerce - 使用4位小數價格下訂單前舍入總價

1個產品的單位是1克。我爲產品設定了100單位(100克)的最低訂單數量。但1克的價格可能非常低(有時爲0.0045美元,所以1克即使不到半美分)。

我還設置了一個最低限度下訂單和購物車必須至少$ 15總。

有時候,購物車的總金額將爲4位小數,例如$ 20.5517。我希望購物車中顯示的小計和總價格四捨五入至小數點後兩位。但我需要保持項目價格與小數點後4位,因爲這是我可以保持與我的價格競爭的唯一途徑。012

基本上我需要後端保持4位小數的價格,並顯示4位小數產品也一樣(多數民衆贊成它已經建立),但我希望總數在客戶可以通過PayPal支付之前進行四捨五入。

任何人都可以幫助我嗎?

感謝

回答

0

這裏是一個解決方案。但是,您必須讓自己在woocommerce相關模板中做出所有必要的更改。下面,自定義函數現在
Template Structure + Overriding Templates via a Theme

然後將盡上顯示的HTML格式的價格(價格變化從作業:

所以,第一,如果你不知道如何正確地定製WooCommerce模板,請閱讀本4個小數2位小數,並保持html標記以防萬一),你將能夠做出woocommerce相關的模板進行必要的更改:

function wc_shrink_price($price_html){ 
    // Extract the price (without formatting html code) 
    $price = floatval(preg_replace('/[^0-9\.,]+/', '', $price_html)); 

    // Round price with 2 decimals precision 
    $shrink_price = round($price, 2); 

    // Replace old existing price in the original html structure and return the result 
    return str_replace($price, $shrink_price, $price_html); 
} 

代碼放在您的活動子主題(或主題的function.php文件)或者也在任何插件文件。

該代碼測試和工程


用例:

在woocommerce模板cart/cart_totals.php在行33你有這樣的原始代碼:
(用於分類彙總顯示價格)

<td data-title="<?php esc_attr_e('Subtotal', 'woocommerce'); ?>"><?php wc_cart_totals_subtotal_html(); ?></td> 

如果你搜索wc_cart_totals_subtotal_html()功能,您將看到使用該WC_Cart方法:WC()->cart->get_cart_subtotal() ...
所以你可以代替這種方式:

<td data-title="<?php esc_attr_e('Subtotal', 'woocommerce'); ?>"> 
<?php 
    // Replacement function by a WC_Cart method 
    $subtotal_html_price = WC()->cart->get_cart_subtotal(); 

    // Here we use our custom function to get a formated html price with 2 decimals 
    echo wc_shrink_price($subtotal_html_price); 
?> 
</td> 

所以知道,你可以看到你需要爲所有購物車價格做類似的事情。
的車和結算模板是cartcheckout子...
這是你的時間來工作了一下!


+0

謝謝你的回答,這對我有很大幫助!我一回到家就會試一試,如果這對我有用,我會告訴你。但看起來這應該是正確的解決方案! – byaafra

+0

@FrédéricByarelle-Bréard自從你第一個問題以來,我一直在思考,我沒有看到另一個更簡單的方法......所以這會給你一些家庭作品:) – LoicTheAztec

+0

是的,有點功課,它會是一些很好的經驗,我已經學到了一些關於woocommerce的工作原理,現在我將一直在尋找模板,而不是尋找插件:) – byaafra

相關問題