我有自定义的帖子类型设置,包含多个类别和子类别。
我要做的是创建一个页面,显示特定类别中的所有帖子,其中的菜单列出了所有类别子类别,以便可以过滤帖子。
我试过复制存档模板并将其重命名为taxonomy-(my-custom-taxonomy).php然后如果我去slug显示某些帖子,并使用
<?php wp_list_categories(); ?>
但我只想要一个特定类别的所有子类别的列表,并过滤这些帖子。我正在努力展示这些,并为所有类别和儿童使用一个模板。
答案 0 :(得分:0)
您可以使用
$term_id = get_queried_object()->term_id;
和
$tax= get_query_var( 'taxonomy' )
返回您在taxonomy.php页面中查看的当前术语和分类的详细信息。
然后,您可以将该信息与get_term_children
一起使用,以获取当前字词的子条款。例如,请参阅提供的链接
修改强>
您的代码应如下所示
<?php
$term_id = get_queried_object()->term_id;
$taxonomy_name = get_query_var( 'taxonomy' );
$termchildren = get_term_children( $term_id, $taxonomy_name );
foreach ( $termchildren as $child ) {
echo '<ul>';
$term = get_term_by( 'id', $child, $taxonomy_name );
echo '<li><a href="' . get_term_link( $child, $taxonomy_name ) . '">' . $term->name . '</a></li>';
$args = array(
'tax_query' => array(
array(
'taxonomy' => $taxonomy_name,
'field' => 'slug',
'terms' => $term->slug,
),
),
);
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<p>' . get_the_title() . '</p>';
}
wp_reset_postdata();
echo '</ul>';
}
?>