Ordonare și includere array după ID-uri specifice de postări
Am următorul cod:
<?php $num_cols = 2; // setează numărul de coloane aici
$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();
?>
Am crezut că simpla adăugare a ID-urilor postărilor va face ca acele postări specifice să apară, și doar acelea. Din păcate, nu pare să fie cazul. Așa că mă întrebam dacă știe cineva cum pot realiza acest lucru.
Mulțumesc anticipat!
Bine ați venit la WPSE și la rețeaua SE, @stephenkeable! Formatare excepțională și un răspuns solid, concis. Continuați cu treaba bună ;)

Acesta ar trebui să fie în top, deoarece am citit mai întâi comentariul lui Milo și am crezut că nu pot sorta ușor după post__in. Foarte util, mulțumesc mult

folosește cheia post__in
în loc de include
pentru a obține postări din anumite ID-uri de postări.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'ID',
'post__in' => array(883, 563, 568, 106),
);
Și pentru a ordona postările
după ID-urile date
, poți folosi următorul array.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'post__in',
'post__in' => array(883, 563, 568, 106),
);

Mulțumesc, Milo! Am reușit să fac postările specifice să apară, dar nu în ordinea respectivă.

@Nina - asta se întâmplă din cauza modului în care funcționează motorul de bază de date MySQL. cea mai simplă metodă pentru a obține ordinea dorită este să parcurgi array-ul cu ID-uri și, pentru fiecare ID, să parcurgi postările pentru a găsi rezultatul potrivit. cealaltă opțiune este mai complexă și necesită modificarea directă a interogării SQL pentru a forța MySQL să le returneze în ordinea specifică.

Puteți utiliza astfel... unde $localservicesselectlocalservices este array-ul din tabelul 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);
Aceasta vă returnează un array de postări în aceeași ordine ca $localservicesselectlocalservices
