Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo evitar la visualización de publicaciones duplicadas con múltiples bucles en WordPress

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.

Evitar publicaciones duplicadas al trabajar con múltiples bucles de 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.

Cómo evitar la visualización duplicada de publicaciones con múltiples bucles en WordPress

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)'.

Agregar un nuevo fragmento de código personalizado en WPCode

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.

Ingresa un fragmento de código personalizado

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.

Métodos de inserción de fragmentos en WPCode

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.

Eliminar publicaciones duplicadas al usar múltiples publicaciones en WordPress

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.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

15 CommentsLeave a Reply

  1. ¿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.

  2. 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?

  3. 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?

  4. 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.

  5. 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;

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.