Adicionar posts relacionados com miniaturas

Mais uma vez venho com uma boa dica para quem quer apresentar no fim de cada artigo os posts relacionados. Com esta dica não só vai mostrar um link para o post relacionado, mas também a miniatura do mesmo.

Eu uso este código nos meus blogs, como podem ver aqui no DicasWP. O código primeiramente vai pegar nas tags do post e procurar por outros posts que tenham essas mesmas tags.

Depois disso, vai apresentar o titulo e a miniatura dos posts encontrados. As miniaturas serão apresentadas com a nova função que vêm desde o WordPress 2.9, caso essa função não estiver activada, ou não tenha nenhuma miniatura defenida ele vai buscar a primeira imagem ao post relacionado, e caso esse post não tenha nenhuma imagem, ele vai mostrar uma imagem por defeito.

Caso ainda não uses a nova função do WordPress 2.9+ aconselho-te a usares porque é muito simples e pratica, podes ver este tutorial que fiz para o WPThemesPT há algum tempo atrás.

<?php
   $tags = wp_get_post_tags($post->ID);
   if ($tags) {
      $tag_ids = array();
      foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
      $args=array(
         'tag__in' => $tag_ids,
         'post__not_in' => array($post->ID),
         'showposts'=>5, //Numero de artigos relacionados a mostrar.
         'caller_get_posts'=>1
      );

      $my_query = new wp_query($args);
      if( $my_query->have_posts() ) {
         echo '<h3>Posts Relacionados</h3><ul>';
         while ($my_query->have_posts()) {
            $my_query->the_post();
            $miniatura2 = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
            $first_img = $matches [1] [0];
?>

<li>
   <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
<?php
   if ( has_post_thumbnail() )
      the_post_thumbnail(array(120,120));
   elseif ( has_post_thumbnail() == false && $first_img == true )
      echo '<img src="'.$first_img.'" width="120" height="120" alt="" title="" />';
   else
      echo '<img src="http://dicaswp.com/wp-content/themes/dicaswp/images/semminiatura.png" width="120" height="120" alt="" title="" />';                               
?>
      <br />
      <?php the_title(); ?>
   </a>
</li>
<?php
}
echo '</ul>';
} }
?>

Podem adicionar esse código onde querem no single.php do vosso site, como neste código estava a abrir um novo loop de posts, os comentários podem não funcionar, depende onde metem este código. Caso isso aconteça, vão ter de meter os comentários num loop separado, para isso vasta pegarem no seguinte código que esta na pagina single.php:

<?php comments_template(); ?>

E troca-lo por:

<?php
   if (have_posts()) :
      while (have_posts()) : the_post(); 
         comments_template();
      endwhile; 
   endif; 
?>

Caso não estejam a conseguir meter este código a funcionar, deixem um comentário com o máximo de detalhes possível.



Com um total de 70 posts.

5 Comentários

  1. uberVU - social comments
    14 de Março de 2010 ás 22:01

    Social comments and analytics for this post…

    This post was mentioned on Twitter by _PedroLopes_: Adicionar posts relacionados com miniaturas – http://tinyurl.com/yask7wh (via @DicasWP)…

  2. Alexandre
    17 de Janeiro de 2011 ás 16:18

    Eu coloquei no meu blog e funcionou, mas com problemas. Ficou na horizontal e mostrando na parte dos comentários, os comentários dos posts relacionados. Muito doido! kkk. Como fazer para ficar na vertical mesmo? E somente com os comentários do post principal?

    Obrigado e adorei o post! =D

  3. ORiOn
    17 de Janeiro de 2011 ás 18:14

    Alexandre, agora você é que tem de adicionar o css para o personalizar.

  4. Alexandre
    18 de Janeiro de 2011 ás 0:50

    Quer dizer, desculpa… Ficou na vertical! Mas gostaria muito de que ficasse na horizontal. No momento, ainda estou estudando css e não sei fazer… Será que vocês podem me dar uma força?

    Muito obrigado!

  5. Marcio
    5 de Março de 2016 ás 20:32

    Boa tarde. Muito bom seu post, me ajudou a resolver o problema de posts relacionados, mas eles ficam na vertical, como colocar na horizontal?

Comenta com força que é de graça!