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.