2017-07-05 56 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