Как получить, чтобы цены вариации WooCommerce имели два десятичных знака (конечный ноль)? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть продукт с вариациями, который отображается шаблоном templates/single-product/add-to-cart/variation.php, который использует шаблоны {{{ data.variation.display_price }}} на основе JavaScript. Когда у меня цена заканчивается нулем, например, 12,50 евро, цена на интерфейсе будет отображаться как 12,5 евро (без нуля). Я хочу, чтобы цена включала конечный ноль.

Я пробовал следующий фильтр, но он не работает.

add_filter( 'woocommerce_price_trim_zeros', 'wc_hide_trailing_zeros', 10, 1 );
function wc_hide_trailing_zeros( $trim ) {
    // set to false to show trailing zeros
    return false;
}

1 Ответ

0 голосов
/ 28 марта 2019

Я исправил это, проверив, что когда цена имеет один десятичный знак, добавьте ноль.

// https://stackoverflow.com/a/2430214/3689325
function numberOfDecimals( $value ) {
    if ( (int) $value == $value ) {
        return 0;
    }
    else if ( ! is_numeric( $value ) ) {
        return false;
    }

    return strlen( $value ) - strrpos( $value, '.' ) - 1;
}

/**
 * Make sure prices have two decimals.
 */
add_filter( 'woocommerce_get_price_including_tax', 'price_two_decimals', 10, 1 );
add_filter( 'woocommerce_get_price_excluding_tax', 'price_two_decimals', 10, 1 );
function price_two_decimals( $price ) {
    if ( numberOfDecimals( $price ) === 1 ) {
        $price = number_format( $price, 2 );
        return $price;
    }

    return $price;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...