Возвращать результаты в foreach только тогда, когда в категории есть продукты WooCommerce - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужен foreach здесь ниже, чтобы возвращать результаты только тогда, когда с категорией связаны продукты. На данный момент он также возвращает «некатегоризованную категорию» Woocommerce, и мне нужно отфильтровать эту категорию или любую категорию без продуктов. Возможно, это быстрое решение, но я не могу понять.

<?php

defined( 'ABSPATH' ) || exit;

function wcc_product_by_cat() {

  $args = array(
      'number'     => $number,
      'orderby'    => 'title',
      'order'      => 'ASC',
      'hide_empty' => $hide_empty,
      'include'    => $ids
  );
  $product_categories = get_terms( 'product_cat', $args );
  $count = count($product_categories);
  if ( $count > 0 ){
      echo '<div id="cat-list__sidebar">';
      foreach ( $product_categories as $product_category ) {
          echo '<div class="card"><div class="card-header" id="heading-'. $product_category->slug .'"><h5 class="mb-0"><button class="btn btn-link" data-toggle="collapse" data-target="#'. $product_category->slug .'" aria-expanded="true" aria-controls="'. $product_category->slug .'">' . $product_category->name . '</button></h5></div>';
          $args = array(
              'posts_per_page' => -1,
              'orderby'    => 'title',
              'order'      => 'ASC',
              'tax_query' => array(
                  'relation' => 'AND',
                  array(
                      'taxonomy' => 'product_cat',
                      'field' => 'slug',
                      'terms' => $product_category->slug
                  )
              ),
              'post_type' => 'product',
              'orderby' => 'title,'
          );
          $products = new WP_Query( $args );
          echo '<div id="'. $product_category->slug .'" class="collapse" aria-labelledby="heading-'. $product_category->slug .'" data-parent="#cat-list__sidebar"><div class="card-body"><ul>';
          while ( $products->have_posts() ) {
              $products->the_post();
              ?>
                  <li>
                      <a href="<?php the_permalink(); ?>">
                          <?php the_title(); ?>
                      </a>
                  </li>
              <?php
          }
          echo '</ul></div></div></div>';
      }
      echo '</div>';
  }

}

add_action(
  'wcc_before_shop_sidebar',
  'wcc_product_by_cat', 10);

?>

1 Ответ

0 голосов
/ 28 апреля 2020
$args = array(
          'number'     => $number,
          'orderby'    => 'title',
          'order'      => 'ASC',
          'hide_empty' => true, // This will hide category without products
          'include'    => $ids
      );

$product_categories = get_terms( 'product_cat', $args );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...