Woocommerce - 如何在小数点后第二位隐藏尾随零?

时间:2017-07-05 18:42:49

标签: php wordpress woocommerce


所以我有一个问题,我希望有人可以帮助我...我有一个使用WooCommerce的WordPress网站,我正在尝试做一些相对具体的事情。该网站对各种产品有大量的批量定价折扣。
现在谈到批量定价我需要用四位小数(即0.1234美元)进行计算,所以我有WooCommerce设置设置为小数位数为4.
事实上,我们的很多产品都没有批量定价折扣;在大多数情况下,四个小数位完全没必要。 (例如:$ 0.5500或$ 12.0000)有没有什么方法可以修剪尾随零但只有在小数点后第二位?例如,如果我有$ 0.5500,它将显示为0.55美元,如果我有12.0000美元,它将显示为12.00美元

我知道几年前问过一个非常相似的问题(see here),但不幸的是,在这种情况下起作用的答案对我来说似乎不起作用......话虽如此,我可能会尝试使用这是错误的方式。我不太熟悉在WordPress“functions.php”文件中使用正则表达式。

任何帮助都将非常感谢!谢谢!

编辑:
在这一点上,我有以下几点:

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;
}

但是这段代码似乎不起作用。价格仍然与以前相同。

2 个答案:

答案 0 :(得分:2)

您可以在functions.php子主题中使用此功能,它可以正常工作并从每个价格中删除.00

add_filter('woocommerce_price_trim_zeros', 'wc_hide_trailing_zeros', 10, 1);
function wc_hide_trailing_zeros( $trim ) {
    // set to false to show trailing zeros
    return true;
}

答案 1 :(得分:1)

我自己没有使用它,但根据前面提到的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 );

触发此行为。