Ordinare e includere array per specifici ID di post
Ho il seguente codice:
<?php $num_cols = 2; // imposta qui il numero di colonne
$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();
?>
Pensavo che semplicemente inserendo gli ID dei post, avrei potuto far apparire i post specifici, e solo quelli. Sfortunatamente, non sembra essere questo il caso. Quindi mi chiedevo se qualcuno sapesse come posso ottenere questo risultato.
Grazie in anticipo!
Benvenuto su WPSE e nella rete SE, @stephenkeable! Formattazione eccezionale e una risposta solida e concisa. Continua così ;)

Questa dovrebbe essere in cima, poiché ho letto prima il commento di Milo e pensavo di non poter ordinare facilmente per post__in. Molto utile, grazie mille

Utilizza la chiave post__in
invece di include
per ottenere i post da specifici ID.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'ID',
'post__in' => array(883, 563, 568, 106),
);
Per ordinare i post
in base agli ID specificati
, puoi utilizzare il seguente array.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'post__in',
'post__in' => array(883, 563, 568, 106),
);

Grazie Milo! Sono riuscito a far apparire i post specifici, ma non in quell'ordine preciso.

@Nina - questo dipende dal funzionamento del motore del database MySQL sottostante. Il modo più semplice per ottenere l'ordine desiderato è iterare sull'array di ID, e per ogni ID, scorrere i post per trovare il risultato corrispondente. L'altra opzione è più complessa e richiede di modificare direttamente la query SQL per fare in modo che MySQL li estragga in quell'ordine specifico.

Puoi utilizzarlo in questo modo... dove $localservicesselectlocalservices è l'array dalla tabella 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);
Questo ti restituisce un array di post nello stesso ordine di $localservicesselectlocalservices
