我正在使用Woocommerce Deposits插件。它使用百分比来计算存款和付款。我需要存入和付款的确切金额。我可以计算出确切的百分比以给出确切的金额,但是插件不允许百分比使用小数点。它四舍五入为整数。
示例:我需要28.3465%,它将四舍五入为28%。
我使用下面的代码,使我可以加2个小数位。因此28.3465%将四舍五入为28.35%。我从此更改了class-wc-deposits-plans-admin.php的第133行:
let { variables, strings } = simplified_response
for (let [key, value] of Object.entries(variables)) {
strings = strings.map(string => string.replace('${' + key + '}', value))
}
simplified_response.strings = strings
对此:
$plan_amounts = array_map( 'absint', $_POST['plan_amount'] );
是否有一个函数或某种方法将4个小数点而不是2个小数点相加?
我在woo的文档中找到了这个,但我不知道。
https://docs.woocommerce.com/wp-content/images/wc-apidocs/function-wc_format_decimal.html
预先感谢
答案 0 :(得分:3)
您需要基于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中以编程方式更改小数精度,您可以使用以下挂钩函数,在其中可以添加任何条件(默认值在Woocommerce属属设置中设置) :
add_filter( 'wc_get_price_decimals', 'custom_decimals_precision'){
function custom_decimals_precision($dec){
$dec = 4; // Four decimals precision
return $dec;
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。