Si estás utilizando múltiples consultas de WordPress para mostrar diferentes conjuntos de publicaciones, es posible que te encuentres con contenido duplicado. Esto se debe a que algunas publicaciones podrían coincidir con más de un bucle y aparecer dos veces.
WordPress no viene con una opción integrada para evitar publicaciones duplicadas en múltiples bucles. Sin embargo, en nuestros más de 15 años de experiencia manejando diferentes sitios de WordPress, hemos aprendido cómo evitar este problema. Por lo tanto, hemos creado un fragmento de código personalizado que puedes agregar a tu sitio y evitar que se muestren publicaciones duplicadas en diferentes bucles.
En este artículo, te mostraremos cómo evitar fácilmente la visualización de publicaciones duplicadas con múltiples bucles en WordPress.

Cómo aparecen las publicaciones duplicadas en múltiples bucles de WordPress
Al crear un tema personalizado de WordPress o una plantilla de página personalizada, a veces puedes necesitar usar múltiples bucles de WordPress.
Por ejemplo, es posible que desees mostrar tus publicaciones recientes junto a las publicaciones más populares de tu sitio. Al mostrar todas las publicaciones de cada categoría, también podrías ayudar a los lectores a encontrar contenido interesante.
En todos estos ejemplos, una sola publicación puede cumplir los criterios para múltiples bucles. Cuando esto sucede, WordPress mostrará contenido duplicado.
Este contenido duplicado puede hacer que tu sitio se vea desordenado y poco profesional. También ocupa espacio en pantalla sin agregar valor.
Dado que generas publicaciones dinámicamente para cada bucle, no puedes predecir manualmente si una publicación duplicada aparecerá en varios bucles.
Dicho esto, veamos una forma sencilla de evitar publicaciones duplicadas al tratar con varios bucles en WordPress.
Evitar publicaciones duplicadas en varios bucles de WordPress
Para esta guía, te mostraremos un código de ejemplo de WordPress que causa el error de publicación duplicada y luego compartiremos un fragmento de código que soluciona el problema.
Al crear un tema secundario de WordPress o una plantilla personalizada, tu código puede ser completamente diferente. Sin embargo, puedes usar nuestro fragmento de código como punto de partida y luego modificarlo para que se ajuste a tu propio sitio web.
Primero, creemos un problema de publicación duplicada. En el siguiente código de ejemplo, mostramos todas las publicaciones de la categoría 'travel' y todas las publicaciones de la categoría 'news' sin evitar las publicaciones duplicadas:
/****** The First Query *******/
$first_query = new WP_Query( array (
'category_name' => 'news',
'posts_per_page' => 3
));
// The Loop
if ( $first_query->have_posts() ) {
echo '<ul>';
while ( $first_query->have_posts() ) {
$first_query->the_post();
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
/****** The Second Query *******/
$second_query = new WP_Query( array (
'category_name' => 'travel',
'posts_per_page' => 3
) );
// The Loop
if ( $second_query->have_posts() ) {
echo '<ul>';
while ( $second_query->have_posts() ) {
$second_query->the_post();
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>
Como puedes ver, este código no verifica las publicaciones duplicadas en ninguna de las consultas.
Si una publicación pertenece a ambas categorías, 'news' y 'travel', entonces aparecerá dos veces, como puedes ver en la siguiente imagen.

Solucionemos este problema.
Para evitar publicaciones duplicadas en tu blog de WordPress, necesitarás almacenar temporalmente los datos de todas las publicaciones mostradas en el primer bucle.
Una vez que tengas esa información, puedes modificar la segunda consulta para evitar que aparezcan publicaciones duplicadas en el segundo bucle:
/****** The First Query *******/
$first_query = new WP_Query( array (
'category_name' => 'news',
'posts_per_page' => 3
) );
// The Loop
if ( $first_query->have_posts() ) {
echo '<ul>';
while ( $first_query->have_posts() ) {
$first_query->the_post();
// Store Post IDs in an Array to reuse later
$exclude[] = $post->ID;
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
/****** The Second Query *******/
$second_query = new WP_Query( array (
'category_name' => 'travel',
'post__not_in' => $exclude, // Tell WordPress to Exclude these posts
'posts_per_page' => 3
) );
// The Loop
if ( $second_query->have_posts() ) {
echo '<ul>';
while ( $second_query->have_posts() ) {
$second_query->the_post();
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>
En el código anterior, estamos almacenando los IDs de las publicaciones en un array llamado $exclude. Después de eso, estamos agregando el argumento post__not_in a la segunda consulta, lo que excluirá las publicaciones que se mostraron en el primer bucle.
Si no estás familiarizado con agregar fragmentos de código a tu sitio, una forma más fácil es usando WPCode. Es el mejor plugin de fragmentos de código para WordPress que te ayuda a agregar código personalizado sin arriesgarte a dañar tu sitio.
Primero, necesitarás instalar y activar el plugin WPCode. Si necesitas ayuda, consulta nuestra guía sobre cómo instalar un plugin de WordPress.
Al activarlo, puedes ir a Code Snippets + Add Snippet desde el panel de WordPress y luego hacer clic en la opción 'Add Your Custom Code (New Snippet)'.

Después de eso, puedes pegar el código personalizado en el área de vista previa del código e ingresar un título en la parte superior.
También necesitarás seleccionar el 'Code Type' como PHP Snippet haciendo clic en el menú desplegable.

Después de ingresar el código, simplemente desplázate hacia abajo para seleccionar la sección de Inserción.
Aquí, puedes usar la configuración predeterminada de 'Auto Insert' y dejar que el plugin agregue automáticamente el código a tu sitio.

Una vez que hayas terminado, simplemente guarda el fragmento y actívalo.
Para más detalles, consulta nuestra guía sobre cómo agregar código personalizado en WordPress.
Ahora, si visitas tu sitio web de WordPress, verás que las publicaciones duplicadas han desaparecido.

Esperamos que este artículo te haya ayudado a aprender cómo evitar la visualización de publicaciones duplicadas con múltiples bucles en WordPress. También te puede interesar nuestra guía sobre cómo deshabilitar cualquier número de publicaciones en un bucle de WordPress y cómo hacer publicaciones fijas en WordPress.
Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Nick J
¿Hay algún plugin que haga esto?
Satriyo
¿Alguien podría decirme cómo hacer esto? Soy muy nuevo en esto y necesito ayuda, por favor, dame un ejemplo claro con el ID de la publicación, ¿cómo lo almaceno? Digamos que el mío es 1527.
Gaurav
Estoy ejecutando 2 bucles antes de los bucles de una categoría específica en la que me gustaría evitar duplicados. Entonces, ¿cómo almaceno los ID en el array de los dos primeros bucles?
Joe
Justo lo que estaba buscando – ¡gracias!
Guilherme Alves
¡¡¡Muchísimas gracias :))) ¡Me ayuda mucho!
¡Me salvaste el día <3
Soporte de WPBeginner
Hola Guilherme,
You are welcome
Don’t forget to follow us on Facebook for more WordPress tips and tutorials.
Administrador
Julie
AWESOME!! Thank you so much! And thank you SERGEYVLASOV for that last comment– Worked like a charm for my multiple loops. Hooray!!
Pirooz
Este método funciona bien hasta que ambos bucles están en un solo archivo.
Pero cuando pongo el primer bucle en header.php y otro en index.php,
in_array($post->ID, $do_nit_duplicate) regresa null.
¿Qué puedo hacer?
warren
Buenas tardes a todos,
¿funcionará esto para mi problema actual de doble visualización de publicaciones en el sitio? literalmente muestra una copia debajo de las publicaciones y el botón 1, 2, ->
el sitio es. He desactivado y reactivado plugins, literalmente me estoy volviendo loco.
agus
¿me puedes ayudar?
Tengo problemas con categorías duplicadas en mi sitio
por favor
#gracias
Soporte de WPBeginner
Parece un problema específico del tema, contacta a los desarrolladores del tema para obtener soporte.
Administrador
Gabriel
Antes de iterar sobre el bucle predeterminado, ¿no deberíamos usar wp_reset_postdata(); ?
Greg
@sergeyvlasov – Gracias, eso funcionó para mí
aunque cambié
$do_nit_duplicate a $do_not_duplicate
Ron Hantman
Echa un vistazo a esta solución que realiza esta tarea fuera del bucle:
http://wordpress.stackexchange.com/questions/61936/removing-duplicate-values-between-two-wordpress-queries/
sergeyvlasov
Creo que hay un defecto en este algoritmo. Solo puede detectar 1 (una) duplicación. Así que la línea mágica se vería así
$do_not_duplicate[] = $post->ID
y luego se usaría como
if(in_array($post->ID, $do_nit_duplicate)) continue;