Пользовательский цикл WordPress: статьи не в том же порядке, что в массиве
Я работаю над новостным сайтом, где есть верхняя секция с восемью рекомендуемыми статьями. Для этих статей я использую поля ACF, в которые ввожу их ID. Вот как выглядит цикл:
$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 для $kiemelt1
}
if ($i == 2) {
//Стандартный HTML для $kiemelt2
}
.... и т.д.
Секция заполняется правильно и в основном работает, но проблема возникает при обновлении массива через страницу опций.
Пример:
Я меняю ID в $kiemelt1
и $kiemelt2
. Статьи загружаются, но порядок не обновляется. Почему так происходит?
Что я пробовал:
Я пытался изменить условие, чтобы помимо проверки $i
на конкретное число, дополнительно проверял ID:
if ($i == 1 && get_the_id($kiemelt1) ) { }
например, но это ломает верстку.
Спасибо!
Как указано в документации, если вы используете параметр post__in
для запроса определенного списка записей и хотите, чтобы результаты возвращались в том же порядке, необходимо установить параметр orderby
в значение post__in
:
$args = array(
'posts_per_page' => 8,
'post__in' => $kiemeltek,
'orderby' => 'post__in',
);
