Пользовательская переменная цена товара в формате Woocommerce без десятичных знаков - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время я использую этот дополнительный код в файле functions.php в активированной дочерней теме, чтобы удалить диапазоны цен, когда продукт использует вариации (поэтому будет отображаться только цена «От: X $», а не «От»: X $ - Y $ "):

add_filter( 'woocommerce_variable_sale_price_html',
'lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html',
'lw_variable_product_price', 10, 2 );

function lw_variable_product_price( $v_price, $v_product ) {

// Regular Price
$v_prices = array( $v_product->get_variation_price( 'min', true ),
                            $v_product->get_variation_price( 'max', true ) );
$v_price = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s', 'woocommerce'),
                       wc_price( $v_prices[0] ) ) : wc_price( $v_prices[0] );

// Sale Price
$v_prices = array( $v_product->get_variation_regular_price( 'min', true ),
                          $v_product->get_variation_regular_price( 'max', true ) );
sort( $v_prices );
$v_saleprice = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s','woocommerce')
                      , wc_price( $v_prices[0] ) ) : wc_price( $v_prices[0] );

if ( $v_price !== $v_saleprice ) {
$v_price = '<del>'.$v_saleprice.$v_product->get_price_suffix() . '</del> <ins>' .
                       $v_price . $v_product->get_price_suffix() . '</ins>';
}
return $v_price;
}

Единственная проблема здесь уже упоминается в заголовке. Мне нужно показывать цену в списке товаров (страница магазина по умолчанию) без десятичных знаков, а не так, как сейчас: enter image description here

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

Выглядит намного лучше без двух нулей в конце, поверьте мне.

1 Ответ

0 голосов
/ 05 июля 2018

Чтобы показать цену без десятичных знаков , вам нужно использовать 'decimals' аргумент в Woocommerce wc_price() функция форматирования…

Так, например, с ценой 499.00 вы добавите к wc_price() аргумент array('decimals' => 0):

echo wc_price( 499.00, array('decimals' => 0) );

Выводит форматированную цену html без десятичных знаков.

Как вы можете видеть, он удаляет десятичные дроби из любой отформатированной цены с помощью функции wc_price (), например, в вашем коде:

$v_price = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s', 'woocommerce'),
wc_price( $v_prices[0], array('decimals' => 0) ) ) : wc_price( $v_prices[0], array('decimals' => 0) );

Для переменных пользовательских цен на товары, как вы хотите увидеть следующий ответ:

Переменные продукты WooCommerce: сохраняйте только минимальную цену с пользовательской меткой

Вам нужно будет просто добавить array('decimals' => 0) к wc_price() функции

...