类别中计数帖子的php循环错误

时间:2020-08-14 13:08:40

标签: php wordpress loops wordpress-theming nested-loops

我的wordpress页面上有多个类别,每个类别都有1到n个子类别。如果一个子类别仅包含一个帖子,则希望显示该帖子的摘录,否则,我将显示该类别的说明。

我已经拥有属于“正常”类别的那一部分,但是关于“单一职位类别”存在某种愚蠢的错误。这是我到目前为止所拥有的:

<?php                   
  $args = array(
     'orderby' => 'slug',
     'child_of' => $cat_id,
  );

  $categories = get_categories( $args ); 


  foreach ( $categories as $category ) {
                            
      $cat_count = get_category($category->cat_ID);
        
      if($cat_count->count == 1) { ?>
           <!-- Cat has only one post, display post -->
      <?php } else {
           <!-- Cat has multiple posts, display cat description -->  
      }
  }
?>

结果是:我得到的是正常类别(很好!),但是多次出现“单个帖子类别”中的第一个。我的循环可能出了点问题,但我看不到。有人看到错误了吗?

2 个答案:

答案 0 :(得分:0)

可能有两个错误:

  1. 类别在数组中是两次(请尝试var_dump。)->可通过array_unique https://www.php.net/manual/de/function.array-unique.php
  2. 修复
  3. 您忘记了一些调试的回声(在某处-第一个解决方案应该可以解决问题。)
  4. 如果第一个解决方案不能解决该问题,请张贴类别数组中的var_dump

答案 1 :(得分:0)

我现在有一个可行的解决方案……终于!

<?php                   
     foreach ( $categories as $category ) {
                                
         // If there is only one post available, go directly to the post
         if($category->count == 1) {

            $all_posts = get_posts($category);
            echo '<div class="item"><h4 class="item-title">' . get_the_title($all_posts[0]->ID) . '</h4><a href="' . get_permalink($all_posts[0]->ID) . '">Read more</a></div>';

         } else {

            echo '<div class="item"><h4 class="item-title">' . $category->name . '</h4><a href="' . get_category_link( $category->term_id ) . '">Read more</a></div>';
         }
     }
?>