Exibir postagens recentes da mesma categoria que a postagem atual na barra lateral

4

Estou usando uma versão modificada do Twenty Twelve e estou tentando exibir postagens recentes da mesma categoria da postagem atual (exceto a postagem atual) na barra lateral.

Eu comecei assim, mas algo não está bem:

    $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;

Eu não sou realmente um programador, então estou lutando para entender a lógica, mas gostaria de aprender. Qualquer sugestão / ajuda muito apreciada!

Obrigado Alex

    
por Sasha 26.05.2013 / 09:12

2 respostas

1

Tente isso

        // 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;

Além disso, confira esta página para obter mais informações sobre WP_Query para fazer um loop por postagens e não se esqueça de redefinir o postdata usando wp_reset_postdata();

    
por Jeffrey Ponsen 16.09.2015 / 13:46
0

Tente desta maneira:

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;
    
por Devoted 26.05.2013 / 11:16