我发现this post, 但没有人回答。我也在寻找同样的问题,到目前为止还没有找到解决方案。
我的问题是,我找不到一种方法来列出类别存档页面上每个帖子的唯一子类别。我的标记当前为:
<article <?php post_class( \'grid_item\' ); ?>>
<div class="grid_item--inner">
<?php the_post_thumbnail(); ?>
<header>
<a class="cat_card--link" href="<?php the_permalink(); ?>">
<h2 class="cat_card--title"><?php the_title(); ?></h2>
<?php get_template_part(\'templates/entry-meta\'); ?>
</a>
</header>
<div class="cat_card--cats">
<?php wp_list_categories(\'title_li=&style=none\'); ?>
</div>
</div>
</article>
当然,这将列出当前页面类别的所有子类别。通过查看WP codex文档,我还没有找到一种方法来只列出每个帖子的适用子类别。这可能吗?如果是,我如何实现这一点?
EDIT: 为了澄清,我想列出每个子类别,如下所示:
Parent Category: "Video"
- Post 1: Subcategory "Comedy"
- Post 2: Subcategory "Action"
- Post 3: Subcategories "Comedy, Action"
其中,每篇文章只列出它使用的子类别。
最合适的回答,由SO网友:Milo 整理而成
如果只想列出当前类别的子类别,请设置child_of
当前类别ID的参数。
wp_list_categories(
array(
\'child_of\' => get_queried_object_id(), // this will be ID of current category in a category archive
\'style\' => \'none\',
\'title_li\' => \'\'
)
);
编辑-要仅列出当前类别的每个帖子的子类别,您需要筛选每个帖子的术语列表以检查
parent
是当前类别ID。
$terms = get_the_terms( get_the_ID(), \'category\' );
if( $terms && ! is_wp_error( $terms ) ){
echo \'<ul>\';
foreach( $terms as $term ) {
if( get_queried_object_id() == $term->parent ){
echo \'<li><a href="\' . get_term_link( $term ) . \'">\' . $term->name . \'</a></li>\';
}
}
echo \'</ul>\';
}