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

Codificación de entradas duplicadas cuando se trabaja con varios bucles de 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

Aparecen mensajes duplicados en varios bucles

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

Aparecen mensajes duplicados en varios bucles

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

No se ha encontrado ningún mensaje duplicado

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.

¡Más Contenido!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Go up