Buclă personalizată WordPress - articolele nu sunt în aceeași ordine ca în Array
Lucrez la un site de știri care are o secțiune superioară cu opt articole recomandate. Folosesc câmpuri ACF pentru aceste articole recomandate și introduc ID-ul lor. Iată cum arată bucla:
$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 standard pentru $kiemelt1
}
if ($i == 2) {
//HTML standard pentru $kiemelt2
}
.... etc.
Acest cod populează secțiunea corect și funcționează în mare parte, dar problema apare când actualizez array-ul prin pagina de opțiuni.
Exemplu:
Schimb ID-ul în $kiemelt1
și $kiemelt2
. Articolele se încarcă, dar ordinea nu se actualizează. De ce se poate întâmpla acest lucru?
Ce am încercat:
Am încercat să modific condiționalul astfel încât pe lângă verificarea lui $i
pentru un număr specific, să verific și ID-ul:
if ($i == 1 && get_the_id($kiemelt1) ) { }
de exemplu, dar acest lucru cauzează întreruperea layout-ului.
Mulțumesc!
După cum este documentat, dacă utilizați post__in
pentru a interoga o listă specifică de articole și doriți ca rezultatele să fie returnate în aceeași ordine, trebuie să setați orderby
la post__in
:
$args = array(
'posts_per_page' => 8,
'post__in' => $kiemeltek,
'orderby' => 'post__in',
);
