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 
?>

5 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 < ?php wp_reset_query(); ?> 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

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">