web-dev-qa-db-fra.com

plugin pour wp_list_categories avec les posts

Y a-t-il un paramètre qui peut être passé à wp_list_categories, pour obtenir un certain nombre de messages de chaque catégorie? Ou un plugin qui fait quelque chose comme ça? Une question similaire se trouvait dans le forum de support de Wordpress , mais elle ne fait pas exactement ce que je veux.

1
Lea Cohen

Le code qui relie le fil à semble très proche de ce que vous décrivez - faire une boucle dans les catégories et récupérer un certain nombre de messages pour chacun.

Si vous souhaitez intégrer des publications dans wp_list_categories(), vous pouvez le faire en étendant la classe Walker_Category et en l'utilisant comme un randonneur personnalisé transmis via l'argument walker ... ).

Certains exemples de code, je ne suis pas tout à fait sûr qu'il gère correctement l'imbrication:

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