带有帖子的wp_list_ategories插件

时间:2011-01-19 作者:Lea Cohen

是否有一个参数可以传递给wp\\u list\\u categories,以从每个类别获得一定数量的帖子?或者是一个做类似事情的插件?类似的问题也出现在Wordpress support forum, 但这并不完全符合我的要求。

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

这个code that thread links to 看起来非常接近您所描述的内容-通过类别循环并为每个类别检索一定数量的帖子。

如果要将帖子集成到wp_list_categories() 您可以通过扩展Walker_Category 类并将其用作自定义walker通过walker 论点但这对于嵌套类别来说并不太好(我刚刚尝试过,要准确地插入帖子似乎很麻烦)。

一些示例代码,我不完全确定它是否正确处理嵌套:

wp_list_categories( array(
    \'walker\' => new Walker_Category_Posts(),
) );

class Walker_Category_Posts extends Walker_Category {

    function start_el(&$output, $category, $depth, $args) {

        $this->category = $category;

        parent::start_el($output, $category, $depth, $args);
    }

    function end_el(&$output, $page, $depth, $args) {
        if ( \'list\' != $args[\'style\'] )
            return;

        $posts = get_posts( array(
            \'cat\' => $this->category->term_id,
            \'numberposts\' => 3,
        ) );

        if( !empty( $posts ) ) {

            $posts_list = \'<ul>\';

            foreach( $posts as $post )
                $posts_list .= \'<li><a href="\' . get_permalink( $post->ID ) . \'">\'.get_the_title( $post->ID ).\'</a></li>\';

            $posts_list .= \'</ul>\';
        }
        else {
            $posts_list = \'\';
        }

        $output .= "{$posts_list}</li>\\n";
    }
}

结束