Evitar duplicar artículos cuando usamos varios loops

Cuando utilizamos varios loops en nuestros templates, nos podemos encontrar con que algún artículo que otro queda repetido. Por ejemplo, cuando hemos creado un template de página personalizado, en el que listamos grupos de artículos por categorías.

Hoy veremos cómo evitar que un post aparecido en cierto lugar de nuestra página reaparezca más tarde, evitando así la duplicidad de contenidos.

Para ello podemos estar trabajando con query_posts, get_posts o wp_query, que son las distintas formas de modificar un bucle de WordPress.

El ejemplo lo seguiremos con query_posts:

Primer bucle (principal)

<?php
$do_not_duplicate = array(); //preparamos el espacio para las ID que colectaremos
query_posts('cat=1,2,3&showposts=5'); //
while ( have_posts() ) : the_post();
$do_not_duplicate[] = $post->ID; // almacenar ID
?>

<?php // usar aquí el html que nos convenga + title, content... etc ?>

<?php the_title(); ?>
<?php the_content(); ?>

<?php
endwhile;
?>

Arbitrariamente, hemos hecho que este bucle en concreto convoque artículos de las categorías 1, 2 y 3; hasta un total de cinco. Esto irá según nuestras necesidades.

Segundo bucle (secundario en nuestro ejemplo)

<?php
query_posts( 'cat=4,5,6&showposts=15' );
while (have_posts()) : the_post();
?>
<?php
if ( !in_array( $post->ID, $do_not_duplicate ) ) { // chequear IDs
?>

<?php // de nuevo, content, title... lo que sea necesario aquí ?>

<?php
}
?>

<?php
endwhile;
?>

El segundo bucle reúne a otras categorías. En el caso de que un artículo compartiera varias, no saldría en el segundo conjunto de posts.

Esperamos que este truco os sea de utilidad. No dudéis en escribir vuestros comentarios.

Comentarios
  1. justo lo que vengo necesitando. Gracias

    Escrito el23/03/2010
  2. Como anillo al dedo. Muchas gracias :D::D

    Escrito el08/05/2010
  3. Había probado varias opciones para evitar que los artículos se repitan, incluso excluyendo categorías y otras cosas, esto simplifica más las cosas. Muchas gracias…

    Escrito el19/05/2010
  4. Ronal Leiva

    Hola, muchas gracias venia necesitando este truco, pero que pasa si necesito un tercer y cuarto bucle? como puedo hacer? Muchas gracias!

    Escrito el15/06/2010
  5. Muy útil!, estaba buscando lograr esto.
    Una duda, me he percatado que si se repite un post, este es retirado del segundo bucle, sin embargo sigue ocupando un espacio en la lista, ya que si le doy “showposts=5” y se repiten 2.. solo me lista 3 el query.

    Habrá alguna solución a esto?
    gracias!

    Escrito el29/08/2010
  6. Hola. Muchas gracias por la informacion. Estaba queriendo saber como evitar este problema con la duplicidad de artículos. Gracias a tu psot he resuelto mi duda. Muchas gracias y espero sigas posteando mas artículos como este. Saludos.

    Escrito el29/04/2011

DEJA TU COMENTARIO