提高 WooCommerce 税收计算精度并保留显示的价格保留两位小数

2023-12-21

在 Woocommerce 设置中,我设置了 6 位小数,以便获得更准确的税收计算。但是,我需要在前端、电子邮件等中仅显示 2 位小数的所有价格和金额。我发现了两个函数

add_filter('wc_price_args', 'custom_decimals_price_args', 10, 1);
function custom_decimals_price_args($args) {
$args['decimals'] = 2;
return $args;
}

add_filter( 'wc_get_price_decimals', 'change_prices_decimals', 20, 1 );
function change_prices_decimals( $decimals ){
$decimals = 2;
return $decimals;
}

它们之间有什么区别,我应该使用哪一个?


注意WC_ROUNDING_PRECISION常数设置为6 in WC_WoocommerceDefine_constants() 方法 https://github.com/woocommerce/woocommerce/blob/5.0.0/includes/class-woocommerce.php#L241.

这意味着WooCommerce 税收计算精度已设置为 6 位小数。

税收计算精确是基于wc_get_rounding_precision()核心功能 https://github.com/woocommerce/woocommerce/blob/5.0.0/includes/wc-core-functions.php#L1844-L1857用于WC_Tax Class https://github.com/woocommerce/woocommerce/blob/5.0.0/includes/class-wc-tax.php#L37:

function wc_get_rounding_precision() {
    $precision = wc_get_price_decimals() + 2;
    if ( absint( WC_ROUNDING_PRECISION ) > $precision ) {
        $precision = absint( WC_ROUNDING_PRECISION );
    }
    return $precision;
}

如你看到的WC_ROUNDING_PRECISION常数优先,如果显示价格小数值 + 2小于WC_ROUNDING_PRECISION持续的。但正如你想保留的那样显示的价格保留两位小数,这需要其他东西。

因此,您不应增加显示的价格小数位,也不应使用wc_price_args or/and wc_get_price_decimals钩子,以提高税收计算的准确性。

If 6 位小数的精度不够并且您想要获得更高的精度:

如何提高税务计算的准确性?

获得更精确的税收计算并保持显示价格保留 2 位小数的最佳方法是编辑 WordPress wp config.php 文件并添加以下行(您可以在其中增加WC_ROUNDING_PRECISION你喜欢的常数值,这里的值设置为8例如):

// Change WooCommerce rounding precision
define('WC_ROUNDING_PRECISION', 8);

这将会改变WC_ROUNDING_PRECISION常数,不影响显示的价格小数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高 WooCommerce 税收计算精度并保留显示的价格保留两位小数 的相关文章

随机推荐