Cómo evitar la visualización de entradas duplicadas con múltiples bucles en WordPress
¿Intentas evitar que aparezcan entradas duplicadas con varios bucles en WordPress?
Si estás ejecutando varias consultas en WordPress para mostrar diferentes conjuntos de entradas, es posible que te encuentres con este problema. Algunas entradas pueden coincidir con más de un bucle y aparecerían dos veces
En este artículo, te mostraremos cómo evitar fácilmente la visualización de entradas duplicadas con múltiples bucles en WordPress
Cómo aparecen las entradas duplicadas en múltiples bucles de WordPress
Puedes utilizar varios bucles de WordPress en una plantilla al crear un tema de WordPress personalizado o una plantilla de página personalizada
Por ejemplo, algunos usuarios pueden querer mostrar sus publicaciones recientes junto con sus publicaciones más populares. Algunos usuarios pueden querer mostrar las entradas recientes seguidas de las entradas de diferentes categorías
Ahora supongamos que una entrada que has publicado recientemente también coincide con los criterios de los bucles múltiples. WordPress lo mostrará de nuevo a menos que lo excluyas
Ahora bien, como estás generando dinámicamente las entradas para cada bucle, no puedes predecir manualmente si aparecerá una entrada duplicada en un bucle
Dicho esto, veamos cómo evitar fácilmente las entradas duplicadas cuando se trata de varios bucles en WordPress
Evitar entradas duplicadas en múltiples bucles de WordPress
Para este tutorial, te mostraremos un código de ejemplo de WordPress. Luego podrás modificarlo según tus propias necesidades
Primero, vamos a recrear el problema de las entradas duplicadas
En el siguiente código de ejemplo, estamos mostrando las entradas de dos categorías sin evitar las entradas duplicadas
<?php /****** 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 comprueba si hay entradas duplicadas en ninguna de las dos consultas. Seguirá y mostrará las entradas duplicadas si se encuentran en ambas categorías
Arreglemos este problema
Para evitar que se dupliquen las entradas, tenemos que almacenar temporalmente los datos de las entradas que se muestran en el primer bucle
Una vez que tengamos esa información, simplemente modificaremos nuestra segunda consulta para excluir esas entradas de la reaparición
Aquí tienes un código de ejemplo que evita que aparezcan entradas duplicadas en el segundo bucle
<?php /****** 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, almacenamos los ID de las entradas en una matriz $exclude
. Después, añadimos post__not_in
a nuestra segunda consulta para excluir las entradas que se mostraron en el primer bucle
Eso es todo, ahora puedes visitar tu sitio web para ver cómo desaparecen las entradas duplicadas del segundo bucle
Esperamos que este artículo te haya ayudado a saber cómo evitar la visualización de entradas duplicadas con múltiples bucles en WordPress. Quizás también quieras ver nuestra completa hoja de trucos para el desarrollo de temas de WordPress para obtener más consejos
Si te ha gustado este artículo, suscríbete a nuestro Canal de YouTube para los videotutoriales de WordPress. También puedes encontrarnos en Twitter y Facebook.
Si quieres conocer otros artículos parecidos a Cómo evitar la visualización de entradas duplicadas con múltiples bucles en WordPress puedes visitar la categoría Themes.
Deja un comentario
¡Más Contenido!