Posts relacionados por categorias ou tags no WordPress

Caso não se queira usar plugins para retornar uma lista dos posts realcionados em seu blog WordPress, você pode, colocar o código diretamente em seu tema. No geral, você encontra, em vários lugares o código para mostrar os relacionados por tag (a primeira ou a última delas). Mas, se as cotegorias forem mais relevantes? Neste caso, pode-se usar uma adaptação do código.

Se preferir, pode usar um plugin para relacionados por categoria que funciona muito bem, mas, como disse, a idéia aqui não usar plugins.

Posts relacionados por categoria

<?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'=>6, // Quantidade de itens na lista
        'caller_get_posts'=>1
    );
    $my_query = new wp_query($args);
    if( $my_query->have_posts() ) {
        echo '<h3>Artigos relacionados</h3><ul>';
        while ($my_query->have_posts()) {
            $my_query->the_post();
        ?>
            <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
        <?php
        }
        echo '</ul>';
    }
}
?>

Mas se, o interessante forem as tags, o código é o seguinte:

Artigos relacionados por tags

<?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, // Quantidade de itens na lista
		'caller_get_posts'=>1
    );
    $my_query = new wp_query($args);
    if( $my_query->have_posts() ) {
        echo '<h3>Artigos relacionados</h3><ul>';
        while ($my_query->have_posts()) {
            $my_query->the_post();
        ?>
            <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
        <?php
        }
        echo '</ul>';
    }
}
?>

Esta dica está presente em um monte de blogs, mas para este post, consultei o Bin Blog.

4 Comentários em “Posts relacionados por categorias ou tags no WordPress”

  1. Renato Tavares disse em 19/03/2011 às 00:11:

    show parabens

  2. Lauro Adriano Alves disse em 18/05/2011 às 12:30:

    Me deu um belo problema. Para dar certo, eu coloquei dentro do laço do single.php, o que ocorre é que tudo abaixo dele, como os comentários, será do último post buscado por ele, e não do post da página.

    • Lauro Adriano Alves disse em 18/05/2011 às 13:13:

      Consegui resolver aqui. Fechei o laço antes do código para os posts relacionados, e abri novamente antes de chamar os comentários.

  3. Philipe Ribeiro disse em 04/06/2012 às 00:38:

    Tô tentando usar para tags… Onde coloco da ID da TAG? Pus onde tem ID e deu erro…

Deixe seu comentário