• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Не меняется цена вариативного товара

Ed777

Опытный
Вчера было обновление вукомерц, после этого перестала меняться стоимость вариативного товара. До обновления вроде работало все правильно.
Т.е. она меняется, но только тогда когда выбираешь саму вариацию и смена цены происходит после клика по пустому месту экрана. Подскажите как исправить что бы стоимость менялась сразу после выбора.
 

Ed777

Опытный
Ранее добавлял код. Он убирал цену от и до. Все работало. После обновления перестало корректно отображаться стоимость. При выборе вариативного товара, цена меняется только когда нажимаешь по пустому месту экрана. Подскажите в чем проблема? Вот код
Код:
//Отображение одной цены (начало)
add_action( 'woocommerce_before_single_product', 'check_if_variable_first' );
function check_if_variable_first(){
    if ( is_product() ) {
        global $post;
        $product = wc_get_product( $post->ID );
        if ( $product->is_type( 'variable' ) ) {
            // removing the price of variable products
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

//Показываем одинаковую стоимость вариативных товаров
add_filter('woocommerce_available_variation', function ($value, $object = null, $variation = null) {
    if ($value['price_html'] == '') {
        $value['price_html'] = '<span class="price">' . $variation->get_price_html() . '</span>';
    }
    return $value;
}, 10, 3);

// Change location of
add_action( 'woocommerce_single_product_summary', 'custom_wc_template_single_price', 10 );
function custom_wc_template_single_price(){
    global $product;
    
// Variable product only
if($product->is_type('variable')):

    // Main Price
        foreach($product->get_available_variations() as $pav){
            $def=true;
            foreach($product->get_variation_default_attributes() as $defkey=>$defval){
                if($pav['attributes']['attribute_'.$defkey]!=$defval){
                    $def=false;             
                }   
            }
            if($def){
                $price = $pav['price_html' ] ;
            } 
        }
 
?>

    <style>
        div.woocommerce-variation-price,
        div.hidden-variable-price {
            height: 0px !important;
            overflow:hidden;
            position:relative;
            line-height: 0px !important;
            font-size: 0% !important;
        }
    </style>
    <script>
    jQuery(document).ready(function($) {
        $('select').blur( function(){
            if( '' != $('input.variation_id').val() ){
                $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'.html()+'</p>');
                console.log($('input.variation_id').val());
            } else {
                $('p.price').html($('div.hidden-variable-price').html());
                if($('p.availability'))
                    $('p.availability').remove();
                console.log('NULL');
            }
        });
    });
    </script>
    <?php
    echo '<p class="price">'.$price. '</p>
    <div class="hidden-variable-price" >'.$price.'</div>';
    
endif;
}

        }
    }
}
 

Amelina

Новичок
Вчера было обновление вукомерц, после этого перестала меняться стоимость вариативного товара. До обновления вроде работало все правильно.
Т.е. она меняется, но только тогда когда выбираешь саму вариацию и смена цены происходит после клика по пустому месту экрана. Подскажите как исправить что бы стоимость менялась сразу после выбора.
Нашли решение? Я уже перепробовала все все что можно, но не работает. Неужели так мало магазинов, нуждающихся в данном решении.
 

Ed777

Опытный
Нашли решение? Я уже перепробовала все все что можно, но не работает. Неужели так мало магазинов, нуждающихся в данном решении.
У меня была скрыта цена от и до и из за этого некоректно отображались цены вариаций. Код как я понял был какой то с ошибкой. Возможно у вас так же есть какой то код добавленый и в этом проблема.
 

Amelina

Новичок
У меня была скрыта цена от и до и из за этого некоректно отображались цены вариаций. Код как я понял был какой то с ошибкой. Возможно у вас так же есть какой то код добавленый и в этом проблема.
Да, но этот код работает в версии 3.7, а с 4 версии стал работать некорректно. Но дело не в коде, так как вариации вообще странно работают в Woo 4, если цены вариаций отличаются. Приходится кликать на пустое место, чтобы увидеть верную цену.
 
Сверху Снизу