【问题标题】:php loop error for count posts in category类别中计数帖子的php循环错误
【发布时间】:2026-02-11 07:35:02
【问题描述】:

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

我已经有了“正常”类别的部分,但是关于“单个帖子类别”有一个愚蠢的错误。这是我目前所拥有的:

<?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 -->  
      }
  }
?>

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

【问题讨论】:

  • wordpess * 会给你一个更可靠的答案。
  • 我什至不知道这个......谢谢 -

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


【解决方案1】:

有两种可能的错误:

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

【讨论】:

    【解决方案2】:

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

    <?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>';
             }
         }
    ?>
    

    【讨论】: