web-dev-qa-db-fra.com

Afficher les publications récentes de la même catégorie que la publication actuelle dans la barre latérale

J'utilise une version modifiée de Twenty Twelve et j'essaie d'afficher les publications récentes de la même catégorie que la publication actuelle (à l'exception de la publication actuelle) dans la barre latérale.

J'ai commencé comme ça mais quelque chose ne va pas:

    $category = get_the_category($post->ID); 
    $current_cat = $category[0]->cat_name; //This will get me the first category assigned to the current post but since every post has only ONE cat. assigned to, it's good enough
   //Next, in my sidebar widget I have this:
    $my_query = new WP_Query('category_name='.$current_cat.'&showposts=10');
    while ($my_query->have_posts()) : $my_query->the_post();
    ...display my titles here ...
    unset($current_cat); //I'm not sure I need to unset this variable?
    endwhile;

Je ne suis pas vraiment un programmeur, alors j'ai du mal à comprendre la logique, mais j'aimerais apprendre. Toute suggestion/aide très appréciée!

Merci Alex

4
Sasha

Essaye ça

        // Get categories
        $categories = wp_get_post_terms( get_the_ID(), 'category');

        // Check if there are any categories
        if( ! empty( $categories ) ) :

            // Get all posts within current category, but exclude current post
            $category_posts = new WP_Query( array(
                'cat'          => $categories[0]->term_id,
                'post__not_in' => array( get_the_ID() ),
            ) );

            // Check if there are any posts
            if( $category_posts->have_posts() ) :
                // Loop trough them
                while( $category_posts->have_posts() ) : $category_posts->the_post();
                    // Display posts
                    echo get_the_title() . '<br />';
                endwhile;
            endif;
        endif;

Consultez également cette page pour plus d'informations sur WP_Query pour la lecture en boucle des publications et n'oubliez pas de réinitialiser les données postales à l'aide de wp_reset_postdata();.

1
Jeffrey Ponsen

Essayez de cette façon:

global $post;
$category = get_the_category($post->ID); 
$current_cat = $category[0]->cat_name; //This will get me the first category assigned to the current post but since every post has only ONE cat. assigned to, it's good enough

$my_query = new WP_Query('category_name='.$current_cat.'&showposts=10');
while ($my_query->have_posts()) : $my_query->the_post();
    the_title();
unset($current_cat); //I'm not sure I need to unset this variable?
endwhile;
0
Devoted