web-dev-qa-db-ja.com

投稿があるwp_list_categoriesのプラグイン

各カテゴリから一定数の投稿を取得するために、wp_list_categoriesに渡すことができるパラメータはありますか?それともそのようなことをするプラグイン?同様の質問が Wordpressサポートフォーラム でもありましたが、それは私が望むことを正確には行いません。

1
Lea Cohen

スレッドがリンクする コードは に非常に近いように思えます - カテゴリをループしてそれぞれについてある程度の投稿を取得する。

投稿をwp_list_categories()に統合したい場合は、Walker_Categoryクラスを拡張し、それを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";
    }
}
3
Rarst