php - 更改 Woocommerce 存款插件付款计划中的百分比小数精度

标签 php wordpress woocommerce formatting precision

我正在使用 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/

相关文章:

php - WooCommerce:检查购物车中不同购物车商品/SKU 的数量

php - 在 Woocommerce 中为特定产品类别添加自定义按钮

php - 内部加入在 laravel 中使用哪里?

php - 如何更改 $_POST php 数组的大小?

mysql - WordPress fatal error - 内存使用

php - WooCommerce:管理员手动创建订单时需要 Hook

php - 一个函数中的 Post 和 Get 方法?拉拉维尔 5.4

PHP - 从字体 URL 中删除查询字符串

html - float 文本到图像的右侧

PHP 和简码组合