Поддержка WooCommerce Как проверить, есть ли на странице товары?

  • Как проверить, есть ли на странице товары?
    Т.е., интересует нечто типа такого: если на странице категории только подкатегории — вывести false, если есть товары — true.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Как проверить, есть ли на странице товары?
    Т.е., интересует нечто типа такого: если на странице категории только подкатегории — вывести 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/

    Полагаю вопрос решен? Тогда стоит отметить его таковым.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «Как проверить, есть ли на странице товары?» закрыта для новых ответов.