需要关于分类列表的帮助!

时间:2016-03-04 作者:codieboie

我试图解决这个问题一段时间,但我无法找到一个令人满意的方式来得到我想要的。也许这很简单,但我太没经验了。

我需要一种方法来显示给定类别的子类别的所有文章标题,如下所示:

Category "x"
  Subcategory 1xa
    Post 1xa
    Post 2xa
  Subcategory 2xb
    Post 1xb
    Post 2xb
Category "y"
  Subcategory 1ya
    Post 1ya
    Post 2ya
  Subcategory 2ab
    Post 1yb
    Post 2yb
etc
我真的不能用我有限的知识来做这件事。我所能得到的只是子类别列表(没有帖子标题)或每个类别、子类别和帖子的列表。我想让每个类别、子类别和帖子都在它们下面(未分类的除外),就像上面的顺序一样。我看到了很多帖子,但没有找到解决方案,因为我不擅长编码。

谁能帮我一下吗?提前非常感谢!

<?php

$cat_args = array(

    \'show_option_all\'  => \'\',
    \'orderby\'          => \'name\',
    \'order\'            => \'ASC\'
 );

 $categories = get_categories( $cat_args );

 foreach( $categories as $category ) {

     $args = array(

         \'showposts\'       => -1,
         \'category__in\'    => array( $category->term_id ),
         \'caller_get_posts\'=> 1
     );

     $posts = get_posts( $args );

     if( $posts ) {

         echo \'<p>Category: <a href="\' . get_category_link( $category->term_id ) . \'" title="\' . sprintf( __( "View all posts in %s" ), $category->name ) . \'" \' . \'>\' . $category->name.\'</a> </p> \';

         foreach($posts as $post) {

             setup_postdata( $post ); ?>

             <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php

         } // foreach($posts
     } // if ($posts
} // foreach($categories
?>

1 个回复
SO网友:tillinberlin

我首先将所有父类别放在一个数组中,然后遍历该数组,得到所有子类别及其各自的帖子。

因此,您基本上可以围绕您的循环构建一个循环–第一个循环仅查询深度为1(父猫),然后第二个循环看起来很像您的循环,但有“cild\\u of”参数。因此,在第二步中,您将获得子猫以及它们为每只父猫发布的帖子。

// First get all parent cats

$parent_cat_args = array(
    \'depth\'   => 1,
    \'orderby\' => \'name\',
    \'order\'   => \'ASC\'
);

$parent_cats = get_categories($parent_cat_args);
然后对于每一位家长…

// then get all child cats and their posts

$child_cat_args = array(
    \'child_of\' => $parent_cat_id,
    \'orderby\'  => \'name\',
    \'order\'    => \'ASC\'
);

$child_cats = get_categories($child_cat_args);

foreach($child_cats as $category) {
    $args = array(
        \'showposts\' => -1,
        \'category__in\' => array($category->term_id),
        \'ignore_sticky_posts\'=>1
    );

    $posts=get_posts($args);

    if ($posts) {

    // …

    }
}
您可以在上找到有关此的更多详细信息https://developer.wordpress.org/reference/functions/get_categories/