Поддержка → WooCommerce → Как проверить, есть ли на странице товары?
Как проверить, есть ли на странице товары?
-
Как проверить, есть ли на странице товары?
Т.е., интересует нечто типа такого: если на странице категории только подкатегории — вывести false, если есть товары — true.
-
Как проверить, есть ли на странице товары?
Т.е., интересует нечто типа такого: если на странице категории только подкатегории — вывести false, если есть товары — true.Может не нужно придумывать себе трудностей, а просто настроить это в настройках (теперь это в кастомайзере.)?
Может не нужно придумывать себе трудностей, а просто настроить это в настройках (теперь это в кастомайзере.)?
Прекрасно. Я в курсе и настроил.
А теперь, как проверить, есть ли на странице товары?это нужно для того, чтобы отключать вывод сайдбара, если нет товаров на странице.
т.е.,if(товары) { <div class="sidebar"> <?php do_action('woocommerce_sidebar'); ?> </div> <div class="content"> <?php do_action('styledstore-woo-archive-content'); ?> </div> } else { <div class="content"> <?php do_action('styledstore-woo-archive-content'); ?> </div> }
если есть другой способ реализации, буду признателен
- Ответ изменён 5 лет, 5 месяцев назад пользователем denism300.
А теперь, как проверить, есть ли на странице товары?
На «странице» (чтобы по этим не имелось ввиду) с точки зрения ВП нет и не может быть «товаров». Там будет то, что Вы выведите.
Вы не с той стороны заходите.
Важно понять что в ВП первично — это конечные записи, страницы и др сущности разных типов контента.
А всё остальное (рубрики, метки, страницы с выводом=веб-страницы) — это «обвеска», которая «привязывается» к ним. (Почувствуйте разницу: не «запись находится в рубрике», а «запись имеет рубрику (терм таксономии)».)Соответственно и плясать нужно от первичных сущностей.
это нужно для того, чтобы отключать вывод сайдбара, если нет товаров на странице.
И при каких условиях там не может быть «товаров»? Вот когда определите эти условия — тогда и решите задачу.
И кстати, ИМХО тут логичнее шаблоны или их запчасти брать, а не экшенами WC баловаться. Есть Вы точно о сайбаре говорите.
И при каких условиях там не может быть «товаров»? Вот когда определите эти условия — тогда и решите задачу.
там не может быть товаров, если это не конечная категория и в настройках отключен вывод подкатегорий и товаров на одной странице.
только вот как это выразить в условии?только вот как это выразить в условии?
Можно напр посчитать родителей/дочек с пом
get_term_children()
и/илиget_category_parents()
Наверняка что-то подобное есть специфичное и для WC, но сейчас на вскидку не подскажу.
Можно посчитать родилей/дочек с пом get_term_children()
сделал так:
if(is_shop() || !empty(get_term_children(get_queried_object()->term_id, 'product_cat'))) { <div class="content"> <?php do_action('styledstore-woo-archive-content'); ?> </div> } else { <div class="sidebar"> <?php do_action('woocommerce_sidebar'); ?> </div> <div class="content"> <?php do_action('styledstore-woo-archive-content'); ?> </div> }
работает, при условии, что на странице нет одновременно товаров и подкатегорий.
если включить в настройках вывод подкатегорий и товаров на одной странице, то работает не корректно, т.к. функция get_term_children() возвращает не пустой результатесли включить в настройках вывод подкатегорий и товаров на одной странице, то работает не корректно, т.к. функция get_term_children() возвращает не пустой результат
Ну и? То что Вы и хотели ж.
Ну и? То что Вы и хотели ж.
в принципе да.
это я так, вдруг в будущем что-то поменяется, и надо будет выводить на странице и товары и подкатегории.вдруг в будущем что-то поменяется, и надо будет выводить на странице и товары и подкатегории.
Ну тогда уже по др условиям будете смотреть.
А вообще рекомендую почить описание функций
get_template_part
,load_template
,is_page_template
и конечно жеget_sidebar
и связанные с ним.А конкретно для WC есть полезный ресурс https://docs.woocommerce.com/wc-apidocs/
Полагаю вопрос решен? Тогда стоит отметить его таковым.
- Тема «Как проверить, есть ли на странице товары?» закрыта для новых ответов.