Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Решено Убрать диапазон цен в вариативном товаре, если цены одинаковые

Тема в разделе "Вопросы, советы и доработки.", создана пользователем nordla, 8 сен 2016.

  1. nordla

    nordla

    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Подскажите пожалуйста, а то уже голову сломал.
    У меня есть вариативный товар, у него атрибуты разные, а цены одинаковые. Как мне установить условие и убрать диапазон цен из карточки товара и оставить только одну цену, но при этом, если цены будут разные, то выводить их диапазон.

    У нас есть функция get_price_html(), в ней как я понял и расписаны варианты вывода цен, в том или ином случае. Вот тут как раз не понимаю, как расписать условие типа if(...) в этой функции. И вообще, в правильном я хоть направлении смотрю?

    PHP:
    public function get_price_html$price '' ) {
            
    $prices $this->get_variation_pricestrue );

            
    // No variations, or no active variation prices
            
    if ( $this->get_price() === '' || empty( $prices['price'] ) ) {
                
    $price apply_filters'woocommerce_variable_empty_price_html'''$this );
            } else {
                
    $min_price current$prices['price'] );
                
    $max_price end$prices['price'] );
                
    $price     min_price !== $max_price sprintf_x'%1$s–%2$s''Price range: from-to''woocommerce' ), wc_price$min_price ), wc_price$max_price ) ) : wc_price$min_price );
                
    $is_free   $min_price == && $max_price == 0;

                if ( 
    $this->is_on_sale() ) {
                    
    $min_regular_price current$prices['regular_price'] );
                    
    $max_regular_price end$prices['regular_price'] );
                    
    $regular_price min_regular_price !== $max_regular_price sprintf_x'%1$s–%2$s''Price range: from-to''woocommerce' ), wc_price$min_regular_price ), wc_price$max_regular_price ) ) : wc_price$min_regular_price );
                    
    $price             apply_filters'woocommerce_variable_sale_price_html'$this->get_price_html_from_to$regular_price$price ) . $this->get_price_suffix(), $this );
                } elseif ( 
    $is_free ) {
                    
    $price apply_filters'woocommerce_variable_free_price_html'__'Free!''woocommerce' ), $this );
                } else {
                    
    $price apply_filters'woocommerce_variable_price_html'$price $this->get_price_suffix(), $this );
                }
            }
            return 
    apply_filters'woocommerce_get_price_html'$price$this );
        }
    Спасибо
     
  2. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    552
    Баллы:
    113
    Типовое поведение WooCommerce. Если цены у вариаций товара одинаковые, то показывается не диапазон цен, но одна цена.
    У Вас точно у всех вариаций одинаковая цена? Может у каких-то вариаций установлена цена распродажи?
    Может влияет какой-то плагин?
     
    • Нравится Нравится x 1
    • Согласен Согласен x 1
  3. nordla

    nordla

    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Спасибо за подсказку и извините за поздний ответ.
    Проблема была в строке:
    PHP:
    $price     min_price !== $max_price sprintf_x'%1$s–%2$s''Price range: from-to''woocommerce' ), wc_price$min_price ), wc_price$max_price ) ) : wc_price$min_price );
    В скачанной теме у переменной min_price был убран идентификатор переменной "$"
    Вот так всё примитивно оказалось.