Изменение процентной десятичной точности в плане оплаты плагина депозитов 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

Заранее благодарю

Author: LoicTheAztec, 2018-06-23

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 файл вашей активной дочерней темы (или активной темы). Протестировано и работает.

 3
Author: LoicTheAztec, 2018-06-23 13:33:24