Wordpress显示补充工具栏中帖子子类别下的所有子类别+帖子

时间:2013-03-10 16:29:31

标签: php wordpress categories sidebar

对于复杂的标题感到抱歉。

我正在使用此代码,以显示我的子子类别,其中包含帖子。问题是代码显示我在网站上的所有子子类别(+帖子)。我只想显示与帖子有关联的子类别。 Child 1下的所有Sub子类别与帖子有关联,因此您可以说我想在子项下显示子子类别,因为帖子与子项相关。

类别结构(年份在标题中):

  • 孩子1
    • 第一年的游戏
      • 在此发帖
    • 游戏第2年
      • 在此发帖

我的代码:

<?php
$cat_id = get_query_var( 'cat' );
$subcats = get_categories( 'child_of=' . $cat_id ); // child categories

class Cat_Walker extends Walker_Category {
    function end_el( &$output, $page, $depth = 0, $args = array() ) {
        $posts = get_posts( 'cat=' . $page->term_id );

        if ( sizeof( $posts ) > 0 ) {
            $output .= '<ul>';

            foreach ( $posts as $post ) {
                $output .= sprintf( '<li><a href="%1$s">%2$s</a></li>', get_permalink( $post->ID ), $post->post_title );
            }

            $output .= '</ul>';
        }

        $output .= '</li>';
    }
}

foreach ( $subcats as $subcat ) {
    $subsubcats = get_categories( 'child_of=' . $subcat->term_id ); // sub child categories

    foreach ( $subsubcats as $subsubcat ) {
        $args = array(
            'title_li'         => '',
            'show_option_none' => '',
            'taxonomy'         => 'category',
            'child_of'         => $subsubcat->term_id,
            'walker'           => new Cat_Walker( )
        );

        wp_list_categories( $args );
    }
}

?>

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我相信你得到了错误的类别ID。你应该用这个:

$category = get_category(get_query_var('cat'));
$cat_id = $category->cat_ID;

而不是

$cat_id = get_query_var( 'cat' );