在Woocommerce的设置中,我设置了6个小数点,以获得更准确的税收计算。然而,我需要所有的价格和金额显示,只有两个小数在前面,电子邮件等。我发现了两个功能。
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;
}它们之间有什么区别,我应该使用哪一种呢?
发布于 2021-02-13 14:49:05
注意,在6中,WC_ROUNDING_PRECISION常量被设置为WC_Woocommerce define_constants() method。
这意味着WooCommerce的税收计算精度已经设置为6小数位数。
税收计算精度基于wc_get_rounding_precision() core function在WC_Tax Class中的应用
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常量,则优先排序。但是,由于你想让显示的价格保持2个小数位数,这就需要一些其他的东西。
所以你不应该增加显示的价格小数,而不使用
wc_price_args或/和wc_get_price_decimals挂钩,以提高税收计算的准确性。
如果6个小数的精度不够,并且您想获得更高的精度:
怎样才能更精确地计算税收?
最好的方法是编辑WordPress wp_config.php文件并添加以下行(您可以根据自己的意愿增加WC_ROUNDING_PRECISION常量值,这里的值设置为8 ),这样才能更精确地计算税收,并保持显示价格为2小数位数。
// Change WooCommerce rounding precision
define('WC_ROUNDING_PRECISION', 8);这将改变WC_ROUNDING_PRECISION常数而不会影响显示的价格小数。
发布于 2021-02-13 08:40:24
wc_price_args用于在价格中添加额外的参数--它接受原始价格,还可以添加其他东西,比如货币符号。当get_price被调用时,它将在前端包含这个货币符号。https://wp-kama.com/plugin/woocommerce/hook/wc_price_args
wc_get_price_decimals,它在“点”之后设置了一些小数-例如。如果您将其设置为5,价格将类似于0.00000 https://wp-kama.com/plugin/woocommerce/function/wc_get_price_decimals。
我没有测试这个,但它应该能胜任这项工作。
add_filter('wc_price_args', 'custom_decimals_price_args', 10, 1);
function custom_decimals_price_args($price, $args) {
return number_format((float)$price, 2, '.', '');
}或者,您可以编辑产品所在的模板,并使用上面的get_price设置number_format格式。
如果这对你有用的话请告诉我。
https://stackoverflow.com/questions/66183179
复制相似问题