2017-07-05 58 views
2


所以我有一個問題,我希望有人能夠幫助我...
我有一個WordPress網站,使用WooCommerce,我試圖做一些相對特定的事情。該網站對各種產品的批量定價折扣公平交易。
現在,當它涉及到大量的定價我那種需要的計算中有四個小數位(即$ 0.1234)完成的,所以我必須設置WooCommerce設置,使小數位數爲4
的事情是,上很多我們的產品我們沒有批量定價折扣;在大多數情況下,小數點後四位是完全不必要的。 (例如:$ 0.5500或$ 12.0000)有沒有什麼辦法可以修正尾隨零,但只有在小數點後第二位?
例如,如果我有0.5500美元,它將顯示爲0.55美元,如果我有12.0000美元,它將顯示爲12.00美元

我知道幾年前有一個非常類似的問題(see here),但不幸的是,答案是在這種情況下工作似乎並不適合我......這就是說,我可能會試圖以錯誤的方式使用它。我不熟悉在WordPress「functions.php」文件中使用正則表達式。

任何幫助都將不勝感激!謝謝!Woocommerce - 如何隱藏小數點後第二位的尾隨零?

編輯:
在這一點上我沿着線的東西:

add_action('wc_price', 'custom_price_disp'); 
function custom_price_disp($price) { 
    $count = null; 
    $resultingPrice = preg_replace('/(?<=\d{2})(0+)$/', '', $price, -1, $count); 
    return $resultingPrice; 
} 

但這代碼似乎並沒有工作。價格仍然與以前一樣顯示。

+0

您需要自定義的功能是:[wc_price()](http://woocommerce.wp-a2z.org/oik_api/wc_price/) – wittich

+0

@wittich好的,這絕對是很好的知道。但是這給我帶來了另一個問題。什麼是定製WooCommerce功能的最有效方式?過去我每次做這件事情都會變得有點混亂。有沒有一種「正確」的方式去實現它,我不知道? –

回答

0

我沒有用它自己,但基於上述wc_price()方法的代碼,它看起來像你可以採取過濾器的優勢:

if (apply_filters('woocommerce_price_trim_zeros', false) && $decimals > 0) { 
    $price = wc_trim_zeros($price); 
} 

你應該能夠把它添加到您的functions.php

add_filter('woocommerce_price_trim_zeros', true); 

觸發此行爲。

+0

謝謝,首先我很欣賞答案。我試着簡單地使用add_filter('woocommerce_price_trim_zeros',true);但是這可以修剪任何和所有的十進制零。我想要做的只是在小數點後第二位修剪零。 –

+0

正確;這就說得通了。在這種情況下,這是相當棘手的!您可能需要重構['wc_trim_zeros()'函數](http://woocommerce.wp-a2z.org/oik_api/wc_trim_zeros/)。你也可以將'true'作爲add_filter()的第二個參數傳遞給它,而不是傳遞一個模仿'wc_trim_zeros()'的函數,但是做你需要的。 – jeffbyrnes