Bucle personalizado en WordPress, artículos no aparecen en el mismo orden que el Array
Estoy trabajando en un sitio de noticias que tiene una sección superior con ocho artículos destacados. Uso campos ACF para estos artículos destacados e ingreso sus IDs. Así es como se ve el bucle:
$kiemelt1 = get_field('kiemelt_1', 'option');
$kiemelt2 = get_field('kiemelt_2', 'option');
$kiemelt3 = get_field('kiemelt_3', 'option');
$kiemelt4 = get_field('kiemelt_4', 'option');
$kiemelt5 = get_field('kiemelt_5', 'option');
$kiemelt6 = get_field('kiemelt_6', 'option');
$kiemelt7 = get_field('kiemelt_7', 'option');
$kiemelt8 = get_field('kiemelt_8', 'option');
$kiemeltek = array($kiemelt1, $kiemelt2, $kiemelt3, $kiemelt4, $kiemelt5, $kiemelt6, $kiemelt7, $kiemelt8);
$args = array(
'posts_per_page' => 8,
'post__in' => $kiemeltek,
);
$wp_query = new WP_Query( $args );
if (have_posts()) {
$i = 0;
while ( have_posts() ) {
the_post();
$i++;
if ($i == 1) {
//HTML estándar para $kiemelt1
}
if ($i == 2) {
//HTML estándar para $kiemelt2
}
.... etc.
Esto llena la sección correctamente y funciona en su mayoría, pero el problema surge cuando actualizo el array a través de la página de opciones.
Ejemplo:
Intercambio los IDs en $kiemelt1
y $kiemelt2
. Los artículos se cargan, pero el orden no se actualiza. ¿Por qué puede ocurrir esto?
Lo que intenté:
Intenté cambiar el condicional para que, además de que $i
sea un número específico, también verifique el ID:
if ($i == 1 && get_the_id($kiemelt1) ) { }
por ejemplo, pero esto rompe el diseño.
¡Gracias!
Como está documentado, si estás usando post__in
para consultar una lista específica de publicaciones y deseas que los resultados se devuelvan en el mismo orden, necesitas establecer orderby
como post__in
:
$args = array(
'posts_per_page' => 8, // Número de publicaciones a mostrar
'post__in' => $kiemeltek, // IDs de las publicaciones destacadas
'orderby' => 'post__in', // Ordenar según el orden de los IDs proporcionados
);
