ПрограмуванняСайти

WooCommerce: показувати ціну лише для варіанта за замовчуванням замість діапазону цін

За замовчуванням WooCommerce показує діапазон цін для товарів із варіаціями. Це може бути незручно для покупців, особливо якщо вони хочуть дізнатися ціну конкретного товару в каталозі, а не бачити діапазон, який не дає чіткого уявлення про ціну одиниці та ускладнює порівняння. Через це покупцеві доводиться відкривати товар і вибирати варіант. Натомість можна задати варіант за замовчуванням для кожного товару й показувати лише його ціну, а поруч вивести підказку за допомогою плагіна «WooCommerce Extra Price Fields». Наприклад, тоді ціна відображатиметься як «10 $ (1 шт.)», тоді як серед варіацій можуть бути також упаковка, ящик, десяток тощо.

Щоб це реалізувати, потрібно виконати такі кроки:

  1. Створити фільтр для зміни ціни варіативного товару.
  2. Визначити, який варіант задано за замовчуванням.
  3. Повернути ціну варіанта за замовчуванням.

// для вариативных товаров отображать цену вариации по умолчанию
add_filter('woocommerce_variable_sale_price', 'custom_variation_price', 10, 2);
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);

function custom_variation_price($price, $product) {
	$available_variations = $product->get_available_variations();

	foreach ( $available_variations as $variation )	{
		$isDefVariation=false;
		foreach($product->get_default_attributes() as $key=>$val){
			if($variation['attributes']['attribute_'.$key]==$val){
				$isDefVariation=true;
			}
		}
		if($isDefVariation){
			return $variation['price_html']; // отформатированная цена (со скидкой зачеркнута), это строка
		}
	}
    return $price;
}

Якщо варіант за замовчуванням не задано, відображатиметься діапазон цін, як і раніше.

Залишити коментар

Вашу електронну адресу не буде оприлюднено. Обов’язкові поля позначено *