Wordpress自定义帖子类别存档

时间:2014-08-18 11:57:24

标签: wordpress custom-post-type wp-list-categories

我有自定义的帖子类型设置,包含多个类别和子类别。

我要做的是创建一个页面,显示特定类别中的所有帖子,其中的菜单列出了所有类别子类别,以便可以过滤帖子。

我试过复制存档模板并将其重命名为taxonomy-(my-custom-taxonomy).php然后如果我去slug显示某些帖子,并使用     <?php wp_list_categories(); ?>但我只想要一个特定类别的所有子类别的列表,并过滤这些帖子。我正在努力展示这些,并为所有类别和儿童使用一个模板。

1 个答案:

答案 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>';   

}
?>