Изменяем формат отображения цен для вариативных товаров

Если мы говорим про цены вариативных товаров WooCommerce, то по умолчанию они отображаются в виде диапазона «минимальная цена – максимальная», вот пример:

цена вариативного товара в WooCommerce

Но что, если такой формат отображения цен не всегда удобен для нас. Даже на скриншоте вы можете заметить, что цена немного не помещается на одной строчке. Ведь можно сделать отображение в виде «от минимальная цена».

Вот так:

Меняем формат цены вариативных товаров в WooCommerce

Делается это не очень сложно, но есть несколько моментов, которые нужно учесть и я расскажу о них позже. Для начала взгляните на этот сниппет кода, который можно отправить в functions.php вашей текущей темы:

add_filter( 'woocommerce_variable_price_html', 'truemisha_variation_price', 20, 2 );
 
function truemisha_variation_price( $price, $product ) {
 
	$min_regular_price = $product->get_variation_regular_price( 'min', true );
	$min_sale_price = $product->get_variation_sale_price( 'min', true );
	$max_regular_price = $product->get_variation_regular_price( 'max', true );
	$max_sale_price = $product->get_variation_sale_price( 'max', true );
 
	if ( ! ( $min_regular_price == $max_regular_price && $min_sale_price == $max_sale_price ) ) {
		if ( $min_sale_price < $min_regular_price ) {
			$price = sprintf( 'от <del>%1$s</del><ins>%2$s</ins>', wc_price( $min_regular_price ), wc_price( $min_sale_price ) );
		} else {
			$price = sprintf( 'от %1$s', wc_price( $min_regular_price ) );
		}
	}
 
	return $price;
 
}
  • На строках 5-8 мы получаем минимальные и максимальные цены вариаций, как обычные, так и распродажные.
  • Мы не делаем ничего (строка 10) в том случае, если у всех вариаций товара одинаковая цена.
  • Сниппет будет работать как в каталоге товаров, так и на страницах самих товаров.
  • Ну и функция wc_price() нужна для того, чтобы цена не отображалось тупо цифрой, а с учётом всех форматирований цены и знака валюты.

И ещё кое-что, если вы хотите научиться изменять WooCommerce не только на уровне вставки готовых сниппетов в код, то рекомендую вам мой видеокурс.

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 21

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.