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

Как отобразить размеры в наличии?

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

  1. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Всем привет. Пришлось поработать с woocommerce.

    Столкнулся с огромной проблемой - как получить доступ к размерам товара?
    Мне нужно выводить в каталоге товара и в карточке размеры которые есть в наличии.
    Вот тут человек спрашивал, то что мне нужно: https://toster.ru/q/263316

    Данный метод не заработал.
    get_dimensions() --- ничего не возвращает.


    Поиск по инету толку не дал. Крайне удивлен, что нет такого функционала по умолчанию. И как оказалось программно не понятно как.

    Кто решал такую задачу? Буду очень признателен хотя бы совету.
     
  2. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
  3. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    searchingman , это не то.

    Уточню более подробно. У меня вариативный товар. К примеру обувь размеров : XL, S, M.

    Естественно их количество разное. Мне нужно что бы отображались как раз имеющиеся размеры. Вот как тут: http://www.lamoda.ua/c/23/shoes-botinki/

    И к моему удивлению в этом супер мега популярном плагине я не обнаружил как сделать вывод нужной мне инфы.
     
  4. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Пробовал хуком сделать:

    function cj_show_dimensions() {
    global $product;
    $dimensions = $product->get_dimensions();
    if ( ! empty( $dimensions ) ) {
    echo '<span class="dimensions">' . $dimensions . '</span>';
    }
    }
    add_action( 'woocommerce_single_product_summary', 'cj_show_dimensions', 21 );

    Как советуют на англо форумах, результата нет.
    get_dimensions() ничего не возвращает
     
  5. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Интересно стало, что таких вопросов в инете по сути то и нет, кроме того что указан мною в начале поста.

    Неужели такой функционал никому не нужен. Ведь для пользователя это очень удобно.
     
  6. tuxfighter

    tuxfighter Местный

    Сообщения:
    680
    Симпатии:
    105
    Баллы:
    43
    Видимо вы первый, кто этим озаботился ;)
     
  7. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Вопрос отображения товаров с имеющимися размерами (остаток на конкретном размере вариации) по ссылке больше относится к используемому фильтру, но не к выводу остатка в каталоге и карточке товара.
    Поэтому определитесь. Вам нужно, чтобы товары фильтровались по наличию в остатке или у каждого товара показывались текущие остатки всех вариаций, т.е.
    Остатки вариаций товара:
    - XL - 10 шт.
    - S - 5 шт.

    Для вывода остатка конкретной вариации товара так же нужно задавать управление запасами, но для каждой вариации.
    Задаем остаток для вариации и в карточке товара получаем остаток выбранной вариации (см.скриншот).
     
    Последнее редактирование: 17 сен 2016
  8. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
  9. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Главное посетителям видеть в каталоге товар с подписью: В наличии (имеющиеся размеры).
     
  10. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Теперь ясно, что нужно.
    Набросал функцию, которая выводит комбинацию атрибутов вариаций товара в наличии (остаток больше нуля).
    Вставить в functions.php темы.
    PHP:
    // WC 2.6.4: Выводит список имен вариаций в наличии на странице товара
    add_action'woocommerce_single_product_summary''my_availability_variations'15 );
    function 
    my_availability_variations() {
        global 
    $product;
        if ( 
    'variable' == $product->product_type ) {
            
    $available_variations $product->get_available_variations();
            
    $text_in_stock '';
            
    $delimiter_in_stock ', ';
            foreach ( 
    $available_variations as $variation ) {
                if (!empty(
    $variation['max_qty'])) {
                    
    $variation_name '';
                    
    $delimiter_attr '-';
                    foreach ( 
    $variation['attributes'] as $attr => $value ) {
                        if ( 
    term_exists$valuestr_replace'attribute_'''$attr ) ) ) {
                            
    $term get_term_by'slug'$valuestr_replace'attribute_'''$attr ) );
                            if ( isset( 
    $term->name ) ) {
                                
    $variation_name .= $term->name $delimiter_attr;
                            }
                        }
                        else 
                            
    $variation_name .= $value $delimiter_attr;
                       
                    }
                    
    $variation_name rtrim$variation_name$delimiter_attr );
                    
    $text_in_stock .= $variation_name $delimiter_in_stock;
                }
            }
            if (!empty(
    $text_in_stock)) {
                
    $text_in_stock rtrim($text_in_stock$delimiter_in_stock);
                echo 
    'В наличии: ' $text_in_stock;
            }
        }
    }
    Так выглядит на теме Storefront (см. скриншот)
     
    Последнее редактирование: 17 сен 2016
    • Нравится Нравится x 1
  11. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    searchingman

    Проверю скоро. И сразу отпишусь о результате.

    Благодарю за подсказку.
     
  12. Янн

    Янн

    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    searchingman

    Добрый день. Все должно было заработать. Код понятен. Но теперь белый экран (((.
     
  13. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Включайте вывод ошибок и смотрите в чем проблема.