Método 1: Usar una Variable Global
- Inicializar un Array para Almacenar los IDs de las Publicaciones MostradasAntes de tu primer bucle, inicializa un array vacío para hacer seguimiento de los IDs de las publicaciones.
php
global $do_not_duplicate;
$do_not_duplicate = array();
- Primer BucleEn tu primer bucle, almacena los IDs de las publicaciones mostradas en el array global.
php
if ($query1->have_posts()) :
global $do_not_duplicate;
$query1 = new WP_Query(array(
'posts_per_page' => 5,
));
while ($query1->have_posts()) : $query1->the_post();
$do_not_duplicate[] = get_the_ID();
// Tu código del bucle aquí
endwhile;
wp_reset_postdata();
endif;
- Segundo BucleEn tu segundo bucle, excluye los IDs de las publicaciones almacenados en el array global.
php
if ($query2->have_posts()) :
global $do_not_duplicate;
$query2 = new WP_Query(array(
'posts_per_page' => 5,
'post__not_in' => $do_not_duplicate,
));
while ($query2->have_posts()) : $query2->the_post();
// Tu código del bucle aquí
endwhile;
wp_reset_postdata();
endif;
Método 2: Usar Transients para Escenarios Más Complejos
Si tienes escenarios más complejos o necesitas persistir la exclusión en diferentes partes de tu sitio, podrías considerar usar transients de WordPress.
- Configurar un TransientAntes de tus bucles, verifica si existe un transient y úsalo. Si no, inicializa un array vacío.
php
$do_not_duplicate = get_transient('excluded_posts') ? get_transient('excluded_posts') : array();
- Primer BucleAlmacena los IDs de las publicaciones en el transient después de tu primer bucle.
php
if ($query1->have_posts()) :
$query1 = new WP_Query(array(
'posts_per_page' => 5,
));
while ($query1->have_posts()) : $query1->the_post();
$do_not_duplicate[] = get_the_ID();
// Tu código del bucle aquí
endwhile;
wp_reset_postdata();
set_transient(‘excluded_posts’, $do_not_duplicate, HOUR_IN_SECONDS);
endif;
- Segundo BucleExcluye los IDs de las publicaciones almacenados en el transient en tu segundo bucle.
php
if ($query2->have_posts()) :
$query2 = new WP_Query(array(
'posts_per_page' => 5,
'post__not_in' => $do_not_duplicate,
));
while ($query2->have_posts()) : $query2->the_post();
// Tu código del bucle aquí
endwhile;
wp_reset_postdata();
endif;
Siguiendo estos métodos, puedes evitar mostrar la misma publicación en múltiples bucles en tu sitio de WordPress. El primer método usando una variable global es sencillo y funciona bien para casos simples. El segundo método usando transients es más adecuado para escenarios complejos donde las exclusiones necesitan persistir en diferentes partes del sitio o por un período más largo.
Leave A Comment