我正在使用 Woocommerce Deposits 插件。它使用百分比来计算存款和付款。我需要准确的押金和付款金额。我可以计算准确的百分比来给出准确的金额,但该插件不允许百分比使用小数点。它向上或向下舍入为整数。
示例:我需要 28.3465%,它将向下舍入为 28%。
我使用了代码(如下),它允许我添加 2 位小数。因此 28.3465% 将四舍五入为 28.35%。我将 class-wc-deposits-plans-admin.php 的第 133 行更改为:
$plan_amounts = array_map( 'absint', $_POST['plan_amount'] );
对此:
$plan_amounts = array_map( 'wc_format_decimal', $_POST['plan_amount'] );
是否有函数或某种方法可以添加 4 位小数点而不是 2 位小数点?
我在 woo 的文档中找到了这个,但我无法弄清楚。
https://docs.woocommerce.com/wp-content/images/wc-apidocs/function-wc_format_decimal.html
提前致谢
最佳答案
您需要基于wc_format_decimal()
source code的自己的自定义格式化函数默认情况下将处理 4 位小数:
function wc_four_decimals( $number, $dp = 4 ) {
$locale = localeconv();
$decimals = array( wc_get_price_decimal_separator(), $locale['decimal_point'], $locale['mon_decimal_point'] );
// Remove locale from string.
if ( ! is_float( $number ) ) {
$number = str_replace( $decimals, '.', $number );
$number = preg_replace( '/[^0-9\.,-]/', '', wc_clean( $number ) );
}
return number_format( floatval( $number ), $dp, '.', '' );
}
代码位于事件子主题(或事件主题,或插件文件中)的 function.php 文件中。经过测试并有效。
然后您将简单地替换:
$plan_amounts = array_map( 'wc_format_decimal', $_POST['plan_amount'] );
作者:
$plan_amounts = array_map( 'wc_four_decimals', $_POST['plan_amount'] );
要在 Woocommerce 中以编程方式更改小数精度,您可以使用以下 Hook 函数,您可以在其中添加任何条件(默认值在 Woocommerce 通用设置中设置) :
add_filter( 'wc_get_price_decimals', 'custom_decimals_precision'){
function custom_decimals_precision($dec){
$dec = 4; // Four decimals precision
return $dec;
}
代码位于事件子主题(或事件主题)的functions.php 文件中。经过测试并有效。
关于php - 更改 Woocommerce 存款插件付款计划中的百分比小数精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995923/