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

В этой статье я расскажу о том, как для вариативных товаров WooCommerce с диапазоном цен, отобразить только минимальное значение стоимости товара.
8 сентября, 2021
РЕПОСТ:

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

Вариативный товар с диапазоном цен
Пример вариативного товара с диапазоном цен

Но бывают ситуации, когда посетителям интернет-магазина не нужно показывать максимальную цену товара или диапазон цен. Связано это может быть с маркетинговой политикой магазина, либо просто с техническими особенностями вашей WordPress темы (например, диапазон цен не помещается в карточке товара на странице каталога магазина).

Хорошим вариантом может послужить вывод цены от минимального значения, как на примере ниже:

Измененный вариативный товар с ценой от минимального значения
Цена вариативного товара от минимального значения

Для того, чтобы изменить отображение цен вариативных товаров WooCommerce, нужно применить следующий сниппет кода, который необходимо разместить в файле function.php вашей темы:

/*Выводим минимальную цену вариативного товара*/

function wc_custom_variable_price( $price, $product ) {
    // Для простой цены
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'От: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    // Для цены распродажи
    $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    sort( $prices );
    $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'От: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    if ( $price !== $saleprice ) {
        $price = '' . $saleprice . ' ' . $price . '';
    }
    
    return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'wc_custom_variable_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_custom_variable_price', 10, 2 );

Данный сниппет отрабатывает как на архивных страницах, так и на страницах карточек товаров. Если вы хотите показывать минимальную цену без приставки "От: " перед ценой, то удалите в приведенном коде в строках 6 и 11 этот текст.

Автор
Сергей Дугин
Фрилансер со стажем. Занимаюсь разработкой сайтов на WordPress и WooCommerce. В своей работе активно использую Elementor и его производные решения. Оказываю консультации и провожу обучающие занятия по перечисленным продуктам.
Похожие записи
Комментарии
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
calendar-fullbubblecrossmenu