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

Изменить отображение цены

buben90

Новичок
Еще подскажите пожалуйста, как сделать проверку на категорию. Хочу сделать в товаре разные текстовые блоки, в зависимости от категории. Полазил по мануалу woocomerce проверка вроде делается вот так
PHP:
if ( is_product_categor( 'my_category' )) {
        echo "привет";
    }
но не работает:(
 

ADv

Гуру
Местный
Еще подскажите пожалуйста, как сделать проверку на категорию. Хочу сделать в товаре разные текстовые блоки, в зависимости от категории. Полазил по мануалу woocomerce проверка вроде делается вот так
PHP:
if ( is_product_categor( 'my_category' )) {
        echo "привет";
    }
но не работает:(
Перечитайте документацию :)

Посмотрите в мой код выше

PHP:
if( is_product_category( 'shirts' ) || has_term( 'shirts', 'product_cat' ) ){
первое условие - это проверка того, находимся ли мы в категории shirt
второе - находится ли товар в ней (немного некорректно выразился, но суть такая )
В общем, попробуйте
PHP:
if( has_term( 'shirts', 'product_cat' ) ){
    echo "Этот товар в рубашках";
}
 

buben90

Новичок
Перечитайте документацию :)

Посмотрите в мой код выше

PHP:
if( is_product_category( 'shirts' ) || has_term( 'shirts', 'product_cat' ) ){
первое условие - это проверка того, находимся ли мы в категории shirt
второе - находится ли товар в ней (немного некорректно выразился, но суть такая )
В общем, попробуйте
PHP:
if( has_term( 'shirts', 'product_cat' ) ){
    echo "Этот товар в рубашках";
}
Спасибо за помощь и разъяснения. Все работает.
 

Denis7

Новичок
Перечитайте документацию :)

Посмотрите в мой код выше

PHP:
if( is_product_category( 'shirts' ) || has_term( 'shirts', 'product_cat' ) ){
первое условие - это проверка того, находимся ли мы в категории shirt
второе - находится ли товар в ней (немного некорректно выразился, но суть такая )
В общем, попробуйте
PHP:
if( has_term( 'shirts', 'product_cat' ) ){
    echo "Этот товар в рубашках";
}
Добрый день!
Уже долго ищу информацию о том, как вывести правильное отображение цены при вариантивном товаре.
Суть в чем:
В каталоге товаров нужно было отображение минимальной цены за товар (а не от 100-500), это я решил кодом:
PHP:
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);


function custom_variation_price( $price, $product ) {


     $price = '';


     $price .= woocommerce_price($product->get_price());


     return $price;


}
Далее, нужно было, чтобы при выборе вариации (в моем случае это литраж товара) - менялась верхняя/основная цена, то есть была динамическая, а не от (к примеру 100-500). Так как по умолчанию она остается не изменой и показывает "от" и "до" как все мы знаем, а цена вариативного товара выводилась ниже.
Я нашел следующий код:
PHP:
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 );





// 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


    $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] );





    // Sale Price


    $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 && $product->is_on_sale() ) {


        $price = '<del>' . $saleprice . $product->get_price_suffix() . '</del> <ins>' . $price . $product->get_price_suffix() . '</ins>';


    }





    ?>


    <style>


        div.woocommerce-variation-price,


        div.woocommerce-variation-availability,


        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">'+$('div.woocommerce-variation-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;


}





        }


    }


}

Вроде все было ок, пока не заметил одного: при поиске к примеру конкретной позиции выпадают разные вариации (литраж), выбираю одну из них И ПРОБЛЕМА В ТОМ, что вариативный товар уже установлен на 10л, но показывает цену за 1л.
То есть не важно какой литраж я в поиске выбираю, он мне все равно получается показывает цену за товар, который установлен по умолчанию в вариациях.
Может как то в последнем коде нужно поправить функцию, чтобы он не по умолчанию показывал, а конкретно выбранный товар?
Заранее огромное человеческое спасибо за любой ответ!
ПС: я не программист, эти коды вставляю в файл темы functions.php
 
Последнее редактирование:

Ed777

Опытный
Короче при назначении скидки "код" уже не работает. Вторая цена не скрывается.Посмотреть вложение 2306 Посмотреть вложение 2307
[/QUOTE]
Возникает проблема при назначении второй цены (скидки) на вариативный товар.
Вот это код перестает работать
/**
* This code should be added to functions.php of your theme
**/
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
$price = '';
if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) $price .= '' . _x( ' ', 'min_price', 'woocommerce') . ' ';
$price .= woocommerce_price($product->get_price());
return $price;
}

Короче при назначении скидки "код" уже не работает. Вторая цена не скрывается.Посмотреть вложение 2306 Посмотреть вложение 2307


Решили как то? Что бы одна цена отображалась со скидкой?
 

dim4ik

Новичок
Добрый день. Подскажите пожалуйста такая вот задачка имеем вариативные товары у каждого три вариации. необходимо в каталоге товаров отображать цену "средней" вариации которая не является ни минимальной ни максимальной
 

tuxfighter

Гуру
Местный
Добрый день. Подскажите пожалуйста такая вот задачка имеем вариативные товары у каждого три вариации. необходимо в каталоге товаров отображать цену "средней" вариации которая не является ни минимальной ни максимальной
Скажите, устав какой секты запрещает вам создать собственную тему с вашим вопросом и заставляет его пихать совсем в неподходящую тему??
 

dim4ik

Новичок
Скажите, устав какой секты запрещает вам создать собственную тему с вашим вопросом и заставляет его пихать совсем в неподходящую тему??
Ну что же вы, самой известной - не знающих php css и что еще нужно для создания темы :)
 
Сверху Снизу