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

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

Image CMS

Янн

Новичок
#1
Всем привет. Пришлось поработать с woocommerce.

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

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


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

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

Янн

Новичок
#3
searchingman , это не то.

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

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

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

Янн

Новичок
#4
Пробовал хуком сделать:

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
Интересно стало, что таких вопросов в инете по сути то и нет, кроме того что указан мною в начале поста.

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

searchingman

Гуру
Местный
#7
searchingman , это не то.

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

Естественно их количество разное. Мне нужно что бы отображались как раз имеющиеся размеры. Вот как тут: http://www.lamoda.ua/c/23/shoes-botinki/
И к моему удивлению в этом супер мега популярном плагине я не обнаружил как сделать вывод нужной мне инфы.
Вопрос отображения товаров с имеющимися размерами (остаток на конкретном размере вариации) по ссылке больше относится к используемому фильтру, но не к выводу остатка в каталоге и карточке товара.
Поэтому определитесь. Вам нужно, чтобы товары фильтровались по наличию в остатке или у каждого товара показывались текущие остатки всех вариаций, т.е.
Остатки вариаций товара:
- XL - 10 шт.
- S - 5 шт.

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

Янн

Новичок
#9
Главное посетителям видеть в каталоге товар с подписью: В наличии (имеющиеся размеры).
 

searchingman

Гуру
Местный
#10
Чтобы указывались только размеры. Само их количество не нужно. Есть более нуля XL - выводить : В наличии: XL.
Вот нашел пример: http://new.strip54.ru/shop/obuv/16-5-17-8-sm/strip-obuv-ado708cm/
Теперь ясно, что нужно.
Набросал функцию, которая выводит комбинацию атрибутов вариаций товара в наличии (остаток больше нуля).
Вставить в 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( $value, str_replace( 'attribute_', '', $attr ) ) ) {
                        $term = get_term_by( 'slug', $value, str_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 (см. скриншот)
 
Последнее редактирование:
Сверху Снизу