仅当子类别中的帖子显示在该子类别下

时间:2012-02-09 作者:Petra

我在侧边栏中有一个子类别列表(顶级类别的子类别),我还可以在每个类别下获得一个帖子列表。我只想在我们位于该子类别下或查看其中一个帖子时显示这些帖子。每个帖子都属于顶级类别和子类别,我不知道如何获取当前子类别id/名称。我知道你会得到这样的分类ID:$category=get\\u the\\u category()$catID=$类别[0]->cat\\U ID;但是,如果一篇文章属于子类别和类别,而我只需要一个我相信的子类别id,那该怎么办呢?当前代码:

<?php  $cats = get_categories(\'child_of=6\'); 
$this_category = get_category($cat);

//echo $parent_category;
   foreach ($cats as $cat) :
    $args = array(
    \'category__in\' => array($cat->term_id)
     );
    $my_query = new WP_Query($args); 
        if ($my_query->have_posts()) : ?>

        <li><a href="<?php echo get_category_link($cat); ?>"><?php echo $cat->name; ?></a>


        <?php if ($this_category->category_parent != 0) { ?>

        <ul class="children">
         <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>     
        <?php /*general loop output; for instance: */ ?>
       <li>- <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>

        <?php endwhile; ?>
        </ul>
        <?php } ?>
        </li>

        <?php else : 
        echo \'No Posts for \'.$cat->name;                
        endif; 

2 个回复
SO网友:leticia

如果使用以下代码:

<?php  $cats = get_categories(\'child_of=6\'); 

        foreach ($cats as $cat) :
            $this_category = get_category($cat);
            $args = array(
                \'category__in\' => array($cat->term_id)
            );
            $my_query = new WP_Query($args); 
            if ($my_query->have_posts()) : ?>

            <li><a href="<?php echo get_category_link($cat); ?>"><?php echo $cat->name; ?></a>

            <?php if ($this_category->category_parent != 0) { ?>

                <ul class="children">
                <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>     
                <?php /*general loop output; for instance: */ ?>
                <li>- <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>

                <?php endwhile; ?>
            </ul>
            <?php } ?>
            </li>

            <?php else : 
                echo \'No Posts for \'.$cat->name;                
            endif; 
       endforeach;     
?>
您将得到如下结果:

子类别1

* - Post title 1
* - Post title 2
子类别2
* - Post title 3
正如您所看到的,每个子类别将只显示该子类别中的帖子。注释I移动$this_category = get_category($cat); 在foreach内部。

SO网友:mor7ifer

通过检查父类别是什么,可以筛选子类别,如下所示:$category_object->category_parent. 任何顶级类别的父级将设置为0,子类别的父级将不会设置为0。

结束