mojwp.ru
Назад

WooCommerce: как округлить цены кратно 5 или до ближайшего нуля

Опубликовано: 22.03.2022
0
892

Сейчас покажу как автоматически округлить цены в вашем интернет-магазине WooCommerce WordPress до цифры кратной 5 или ближайшего нуля. Этот вариант для тех, кто указывает центы/копейки в стоимости и очень пригодится всем, кто массово увеличили цены по всему сайту.

Например. У вас была цена 2543.28 р. Вот сделаем красиво: 2543.30 р., т.е. избавились от 8 на конце в пользу увеличения цены по правилам округления. Еще пример 115.33$ -> 115.35$ и т.п.

Важно! Этот способ округляет цены на фронте сайта и для подсчета клиентам в корзине/заказе. У вас в админке цены останутся прежние, "некрасивые", т.к. для их изменения потребуется делать инъекцию в базу данных.

У жены небольшой интернет-магазин, без 1С и сложных связей товаров, так что этого способа вполне достаточно для округления. Большинству из вас он тоже подойдет.

Итак, нужно будет вставить кусок кода в файл functions.php (надеюсь вы работаете с дочерней темой).

// округляем цены до ближайшего нуля
add_filter( 'woocommerce_product_get_price', 'my_custom_round_price' );
add_filter( 'woocommerce_product_variation_get_price', 'my_custom_round_price' );
add_filter( 'woocommerce_get_price_excluding_tax', 'my_custom_round_price' );
add_filter( 'woocommerce_get_price_including_tax', 'my_custom_round_price' );
function my_custom_round_price( $total ) {
$round_num = round($total / 0.1) * 0.1;
$total = number_format($round_num, 2);
return $total;
}

Вот и всё!

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

Поясню

Мы разом округлили цены для обычных и вариативных товаров, а также товаров на скидке/распродаже. Округление до ближайшего нуля с 2 знаками после запятой.

WooCommerce: как округлить цены кратно 5 или до ближайшего нуля
Увеличение. Знаков после запятой

В строке 7 стоит значение round($total / 0.1) * 0.1;. Здесь мы можем заменить на round($total / 0.05) * 0.05; и тогда округление будет до пяти центов/копеек. И аналогично для другого разряда цены.

Автор:
Виталий
Поделиться
Похожие записи
Черкани пару строк
Будь первым и получишь респект от меня!
Имя
Укажите своё имя и фамилию
E-mail
Без СПАМа, обещаем
Текст сообщения
Отправляя данную форму, вы соглашаетесь с политикой конфиденциальности и правилами нашего сайта.