@itmalex

Как отсортировать посты в таком, порядке, чтобы указанные ID были первыми?

Как отсортировать посты в таком, порядке, чтобы указанные ID были первыми?
Пробовал так, но не прокатило, вп при выводе игнорирует порядок элементов в массиве.

global $wp_query;

$premium_ids = array(1, 2, 3, 4, 5);
 usort($wp_query->posts, function ($item) use ($premium_ids) {
                    return in_array($item->ID, $premium_ids) ? -1 : 1;
                });

//Дальше идет стандартный вывод постов

while ( have_posts() ) : the_post();


Решение. Поменял uasort на usort. Юзайте!
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
xakplant
@xakplant
Автор сайта xakplant.ru
Вот такой код. Думаю, что оптимально в вашем случае будет пройтись по циклу 2 раза.
Первый:
$query = new WP_Query( 
	array( 
	'post_type'=>'page',
	'post__in' => array(1, 2, 3, 4, 5 ) ,
	'order'=>'ASC',
	'orderby'=>'post__in'
);

while ( $query->have_posts() ) : $query->the_post();
// и т.д.

Второй
$query = new WP_Query(array('post__not_in'=>array(1, 2, 3, 4, 5)));
while ( $query->have_posts() ) : $query->the_post();
// и т.д.


В первом вы выведите все "премиум" посты)
А далее все остальные

Если я правильно понял, что вам нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы