08.06.2010

Exibir os posts relacionados no WordPress sem precisar instalar plugin

Existe uma maneira de exibir no WordPress os posts relacionados sem precisar instalar um plugin. A vantagem é que você pode editar da maneiro que quiser a estrutura de como vai ser exibida esses posts relacionados.

Você pode exibir esses posts relacionados pelas tags ou pela categorias. Ou seja, posts que tiverem as mesmas tags/categorias irão aparecer nessa lista de posts relacionados.

Exibir os post relacionados pelas tags

Abra o arquivo single.php por exemplo, e nele adicione o código dentro do if do post:

<?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, // Number of related posts that will be shown. 
			'caller_get_posts'=>1 
		); 
		$my_query = new wp_query($args); 
		if( $my_query->have_posts() ) { 
			echo '<h3>Related Posts</h3><ul>'; 
			while ($my_query->have_posts()) { 
				$my_query->the_post(); ?> 
				<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> 
			<?php } 
			echo '</ul>'; 
		} 
	} 
?>

Exibir os post relacionados pelas categorias

Abra o arquivo single.php por exemplo, e nele adicione o código dentro do if do post:

<?php 
	$categories = get_the_category($post->ID);  
	if ($categories) {  $category_ids = array();  
		foreach($categories as $individual_category)  
			$category_ids[] = $individual_category->term_id; 
 
		$args=array( 
			'category__in' => $category_ids, 
			'post__not_in' => array($post->ID), 
			'showposts'=>5, // Number of related posts that will be shown. 
			'caller_get_posts'=>1 
		); 
		$my_query = new wp_query($args); 
 
		if( $my_query->have_posts() ) { 
			echo '<h3>Related Posts</h3><ul>'; 
			while ($my_query->have_posts()) { 
				$my_query->the_post(); ?> 
				<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> 
			<?php } 
			echo '</ul>'; 
		} 
	} 
?>

Importante!

É importante lembrar que os dois códigos são feitos utilizando o método wp_query. Isso quer dizer que a sua query de post vai ser sobrescrita. Para que isso não aconteça usamos a função wp_reset_query(). Ela reseta a query para a padrão da página. Um exemplo de erro que pode está acontecendo com você é colocar os posts relacionados antes da lista de comentários do post. Nesse caso você verá que os comentários ficaram bugados. Para resolver isso inclua o seguinte código antes da chamada dos comentários:

<?php  
	// aqui entra o código do seu post 
	// aqui entra o código de posts relacionados 
	wp_reset_query(); // aqui você reseta a query 
	comments_template(); // sua função que chama seus comentários 
?>

13 respostas a "Exibir os posts relacionados no WordPress sem precisar instalar plugin"

  1. clovis disse:

    Olá! faz algum tempo que procuro esta forma de exibição de artigos relacioandos (cotegoria) sem a necessidade de usar um plugin. Usei o código php que vc informou e funcionou muito bem. Mas notei que com o código na página single.php houve uma mudança nos comentários, começou a aparecer comentários do ultimo post relacionado pelo código. Você saberia dizer como solucionar isso?
    abraço!

  2. Ruan Mér disse:

    @clovis
    vou dar uma testada quando puder e tentarei “reproduzir” o erro para achar uma solução

  3. Ruan Mér disse:

    @clovis

    use o código php antes do bloco de código dos comentários

  4. Israel disse:

    Mano, achei muito bom, inclusive consegui colocar as datas e horáirios dos posters relacionados, PORÉM tem só um problema: ta entrando em conflito com a página de comentários. Quando coloco o código de posts relacionados, os comentarios dos posters nao funcionam, redireciona par aoutro ao comentar. Saberia como resolver isso? abraço

  5. Fabiano Spada disse:

    Ruan, muito bom seus post, obrigado pela ajuda.
    Porem me fez lembrar um velho problema que não consegui resolver.

    Gostaria de mostrar na HOME os 5 últimos posts com a tag “notas”.
    Já tentei o código mais simples que é:
    WP_Query( ‘tag=notas&showposts=5’ )
    Mas retorna vazio..

    Por favor me ajuda preciso muito disso.
    obrigado.
    Fabiano Spada

  6. Diogo disse:

    Ruan, você solucionou meu problema. Eu já utilizava este código de chamada de posts relacionados. E eu tinha este problema com a query, eram mostrados comentários de posts diferentes nos que eu tentava visualizar. Essa função de zerar a query resolveu este grande problema meu.
    Obrigado amigo!

  7. Michael disse:

    Olá Ruan, parabéns pelo artigo. Aqui funcionou!

    Sabe como posso utilizá-lo para mostrar em ordem randômica?

    Abraços e obrigado.

  8. Matheus disse:

    Poxa, eu estava com o problema dos comentários bugados por causa do código de artigos relacionados. Li seu post e adicionei o wp_reset_query(); dentro da função que chama os comentários e tudo funcionou perfeitamente! Muito obrigado, cara.

  9. Carlos disse:

    Olá, Estou muito contente de encontrar pessoas que estejam dispostas a compartilhar seus conhecimentos. Tenho buscado diversas soluções para incrementar meu Site/Blog, sem ter que recorrer a plugins. Tinha antes um plugin que fazia isso e a solução é muito simples. Muito obrigado mesmo e te desejo muito sucesso em seus objetivos. Um abraço!

  10. Ricardo disse:

    Parabens pelo artigo me ajudou muito

  11. Douglas disse:

    Gostaria de exibir os próximos 2 posts relacionados a um termo e os 2 posts anteriores relacionados também a este termo…

  12. Rafael disse:

    Muito bom tudo certo, recomendo =d obg!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *