Ответы в темах

Просмотр 15 ответов — с 1 по 15 (всего 20)
  • @dallynx подскажите что значит попробовать Костыльком.) Не понимаю Вас(

    Не помогло. Но спасибо!

    @takeback вы мне как то очень помогли с данным кодом. Ниже данный код. Но после обновления вукомерц я так понимаю что то с ним не то. Цена не меняется на вариативном товаре пока не кликнешь по пустому месту экрана. Можно как то исправить? Подскажете?

    //Отображение одной цены (начало)
    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;
    }
    
            }
        }
    }
    

    @yube согласен, мой бок, вот ссылка vela-art.com/product/840d-300d/

    @fierevere вообще не согласен, коллективный ум намного лучше и при решении любого вопроса в данном случаи одинакового, я считаю что это должно обсуждаться в одной теме. т.к. при решении и поиске любого другого вопроса как показывает практика, приходится перечитывать кучу разных тем с одной и той же проблемой и все это собирать в кучу. Но если у Вас такие правила — ок! Вы модератор, Вам виднее!

    Представляю как злорадствует @tuxfighter . Ну это так к слову.

    Давайте о правилах форума прекратим. Мы здесь не для этого. Спасибо!

    @fierevere для чего открывать еще одну тему с для решения одного и того же вопроса?

    @tuxfighter нет не хочу. Я хочу что бы вы не спамили и НЕ засоряли тему своими неуместными комментариями, догадками и мнениями!!!!!!!!!!!!!

    @tuxfighter в данном случаи вы зосаряете тему. Вы учасник форума или модератор? Насколько я вижу учасник как и я! У человека такая же самая проблема была как и у меня. У него Код не работает! Он обратился в тему в которой это обсуждают и пытаются решить данную проблему. Если вы прочитаете тему с начала вы поймёте! А не увидев фразу, возможно не туда пишу, делать какие то выводы.

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

    @tuxfighter а чего носом ткуть. в чем вопрос @lukadp отличатся от данной темы?

    Дублирую верный код

    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;
    }
    
            }
        }
    }

    @takeback вторая цена за другую вариацию, но ее в данный момент нет в наличии. Вукомерц настроен отображать только то что есть в наличии

    @takeback да действительно проблема в этом плагине. Когда отключил все работает, но тогда куча ненужных полей!

    @takeback супер спасибо!)))
    Мы обсуждаем то что относиться к этой теме)))

    По коду скрыть стоимость, все таки как то не совсем корректно работает, при первом заходе на страницу с товаром, не та цена отображается. Стоит вариация по умолчанию, а цена отображается другой вариации. После того как клацаешь по вариации, выбираешь другую и потом ту что стоит по умолчанию, отображается правильная.
    http://prntscr.com/opnqv4
    http://prntscr.com/opnr1l
    http://prntscr.com/opnr69

    Остальные два кода супер! Работают!

    Касательно ошибки в корзине, если я отключу плагин woocommerce checkout manager, как я скрою ненужные поля? Я только это решение нашел.

    @takeback да действительно, я даже не видел. У меня вообще с ней тоже проблема. на странице Просмотра корзины все работает правильно, а вот на странице Оформления заказа не открывается окно ввода промокода и не правильно считает Доставку курьером и Новой почты, если выбрано Курьер на странице Просмотр корзины и перехожу в Оформление, там меняю на Новую почту стоимость не меняется, а должна. Тоже искал решение не нашел, теперь еще и эта ошибка о которой вы написали.

    @takeback пока работает, ошибок не вижу, Вы не добавили показывать одинаковую стоимость вариативного товара, я добавил. Потестю отпишусь. Не совсем понял о том что вы написали в P.S. при добавлении в корзину у меня количество не увеличивается!
    Спасибо Вам огромное!
    Готовый код

    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;
    }
    
            }
        }
    }

    @takeback работает, но количество в наличии показывает только при выборе другого цвета и потом того который стоял по умолчанию, т.е. сразу не отображается количество. Это важно как по мне.

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

    http://prntscr.com/opfj8p
    http://prntscr.com/opfjjc
    http://prntscr.com/opfjqs

    Вот другая страница с отображением В наличии, как было до установки кода, было везде так. http://prntscr.com/opflzt

Просмотр 15 ответов — с 1 по 15 (всего 20)