Ordenar e incluir array por IDs específicos de posts
Tengo lo siguiente:
<?php $num_cols = 2; // establecer el número de columnas aquí
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'ID',
'include' => '883, 563, 568, 106',
'order' => ''
);
query_posts($args);
if (have_posts()) :
for ( $i=1 ; $i <= $num_cols; $i++ ) :
echo '<div id="col-'.$i.'" class="col">';
$counter = $num_cols + 1 - $i;
while (have_posts()) : the_post();
if( $counter%$num_cols == 0 ) : ?>
<div id="box">
<?php the_post_thumbnail('post-thumbnail', array('title' => '', 'alt' => '')); ?>
<?php the_excerpt();?>
</div>
<?php endif; $counter++;
endwhile;
echo '</div>';
endfor;
endif;
wp_reset_query();
?>
Pensé que simplemente poniendo los IDs de los posts, podría hacer que aparecieran los posts específicos, y solo esos posts. Desafortunadamente, ese no parece ser el caso. Así que me preguntaba si alguien sabía cómo puedo lograr esto.
¡Gracias de antemano!
¡Bienvenido a WPSE y a la red de SE, @stephenkeable! Formato excepcional y una respuesta sólida y concisa. Sigue con el buen trabajo ;)

Esto debería estar arriba, ya que leí primero el comentario de Milo y pensé que no podía ordenar fácilmente por post__in. Muy útil, muchas gracias

Utiliza la clave post__in
en lugar de include
para obtener publicaciones de IDs específicos.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'ID',
'post__in' => array(883, 563, 568, 106),
);
Y para ordenar las publicaciones
según los IDs de publicaciones proporcionados
, puedes usar el siguiente arreglo.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'post__in',
'post__in' => array(883, 563, 568, 106),
);

¡Gracias Milo! Logré que aparecieran las publicaciones específicas, pero no en ese orden en particular.

@Nina - eso se debe al funcionamiento del motor de base de datos MySQL subyacente. La forma más sencilla de obtener el orden que deseas es iterar sobre tu arreglo de IDs, y para cada ID, recorrer las publicaciones para encontrar el resultado coincidente. Tu otra opción es más compleja y requiere modificar directamente la consulta SQL para que MySQL las obtenga en ese orden específico.

Puedes usarlo así... donde $localservicesselectlocalservices es el array de la tabla wp_postmeta
$localservicesselectlocalservices = get_post_meta($post_id, 'local_services_select_local_services', true);
$args = array(
'post_type' => array($post_type),
'post_status' => array('publish'),
'post__in' => $localservicesselectlocalservices,
'orderby' => 'post__in'
);
$query = new WP_Query($args);
Esto te devuelve un array de posts en el mismo orden que $localservicesselectlocalservices
