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/

相关文章:

wordpress - 当请求多个帖子类型时,WP_Query 不会返回自定义帖子类型之一

wordpress - Woocommerce 产品导入 API 上传特色图片

php - DateTime::createFromFormat 未按预期工作

php - 无法创建mysql表

php - 通过 <a href> 使用 mysql 主机在 PHP 中打开新页面

javascript - 脚本引用另一个脚本时出现 jQuery 错误

php - 仅通过 FTP 访问导出 MySQL 数据库

javascript - WP 媒体库 - 选择函数不更新 ID 更新的行索引

wordpress - 如何在 WordPress 的 woocommerce 产品列表管理页面中添加自定义字段

wordpress - 检查 WooCommerce 中是否应用了任何优惠券代码