Изменение процентной десятичной точности в плане оплаты плагина депозитов Woocommerce
Я использую плагин депозитов Woocommerce. Он использует проценты для расчета депозита и платежа. Мне нужно, чтобы депозит и оплата были точной суммой. Я могу рассчитать точные проценты, чтобы дать точную сумму, но плагин не допускает десятичных знаков для процентов. Он округляется вверх или вниз до целого числа.
Пример: Мне нужно 28,3465%, это округлит до 28%.
Я использовал код (ниже), который позволил мне добавить 2 знака после запятой. Таким образом, 28,3465% будут округлите до 28,35%. Я изменил строку 133 из class-wc-deposits-plans-admin.php из этого:
$plan_amounts = array_map( 'absint', $_POST['plan_amount'] );
К этому:
$plan_amounts = array_map( 'wc_format_decimal', $_POST['plan_amount'] );
Есть ли функция или какой-либо способ добавить 4 десятичных знака вместо 2?
Я нашел это в документах Ву, но не могу понять.
Https://docs .woocommerce.com/wp-content/images/wc-apidocs/function-wc_format_decimal.html
Заранее благодарю
1 answers
Вам нужна ваша собственная функция пользовательского форматирования, основанная на wc_format_decimal()
исходный код, который будет обрабатывать 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 genera):
add_filter( 'wc_get_price_decimals', 'custom_decimals_precision'){
function custom_decimals_precision($dec){
$dec = 4; // Four decimals precision
return $dec;
}
Вводится код function.php файл вашей активной дочерней темы (или активной темы). Протестировано и работает.