Задача. Необходимо отобразить на страницах товара и в категориях статус наличия товара «В наличии» («Нет в наличии»). Проблема в том, что Woocommerce при указании в карточке товара в запасах статуса остатка «В наличии» не отображает этот статус нигде. А если установлено в «Нет в наличии», то отображает вместо кнопки «В корзину». Нам необходимо, чтобы всегда отображался статус «В наличии» («нет в наличии»).
Решение 1. Вставить в шаблон вывода товара в месте где нужно вывести наличие товара php-Код №1:
1 2 3 4 5 6 7 8 9 |
/* Вставляем в то место шаблона где нужно вывести этот статус */ if (get_post_meta(get_the_ID(), '_stock_status', true) == 'outofstock') { echo '<div class="outofstock">Нет в наличии</div>'; } else { echo '<div class="stock">В наличии</div>'; } |
Решение 2. Зарегистрировать в function.php
(Код №2) шорткод и вставлять шорткод туда где нужно вывести статус наличия товара:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* Регистрация шорткода */ add_shortcode( 'nalichetovara', 'nalichetovara_func' ); function nalichetovara_func( ){ if (get_post_meta(get_the_ID(), '_stock_status', true) == 'outofstock') { return '<div class="outofstock">Нет в наличии</div>'; } else { return '<div class="stock">В наличии</div>'; } } /* После чего можно будет использовать шорткод [nalichetovara] */ |
Учитывая, что при установке в товаре статуса остатка «Нет в наличии» Woocommerce все-таки выводит это значение вместо кнопки добавления в корзину, то можно из регистрации шорткода убрать '<div class="outofstock">Нет в наличии</div>'
, чтобы избежать двойной фразы «Нет в наличии».