我试图解决这个问题一段时间,但我无法找到一个令人满意的方式来得到我想要的。也许这很简单,但我太没经验了。
我需要一种方法来显示给定类别的子类别的所有文章标题,如下所示:
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
?>
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/