Сортировка и включение массива по определенным ID записей
У меня есть следующий код:
<?php $num_cols = 2; // установите здесь количество колонок
$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();
?>
Я думал, что просто указав ID записей, я смогу отобразить конкретные записи, и только их. К сожалению, это не работает. Поэтому я хотел бы узнать, знает ли кто-нибудь, как я могу это реализовать.
Заранее спасибо!
$args = array(
'post_type' => 'testimonials', // Тип записи - отзывы
'posts_per_page' => 4, // Количество выводимых записей
'orderby' => 'post__in', // Сортировка по порядку ID в массиве
'post__in' => array(883, 563, 568, 106) // Массив ID записей в нужном порядке
);
Использование параметра post__in
в значении orderby
позволит сохранить порядок записей согласно массиву ID, переданному в post__in

Добро пожаловать в WPSE и сеть SE, @stephenkeable! Отличное форматирование и чёткий, лаконичный ответ. Так держать ;)

Этот ответ должен быть первым, так как я сначала прочитал комментарий Мило и подумал, что не могу легко отсортировать по post__in. Очень полезно, большое спасибо!

Используйте ключ post__in
вместо include
для получения записей по определённым ID.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'ID',
'post__in' => array(883, 563, 568, 106),
);
Для сортировки записей
в соответствии с указанными ID
, используйте следующий массив.
$args = array(
'post_type' => 'testimonials',
'posts_per_page' => 4,
'orderby' => 'post__in',
'post__in' => array(883, 563, 568, 106),
);

Спасибо, Мило! Мне удалось сделать так, чтобы конкретные записи отображались, но не в том конкретном порядке, который я хотела.

@Нина - это происходит из-за того, как работает движок базы данных MySQL. Самый простой способ получить нужный вам порядок - это перебрать ваш массив ID, и для каждого ID перебрать посты, чтобы найти соответствующий результат. Другой ваш вариант более сложный и требует непосредственного изменения SQL-запроса, чтобы заставить MySQL выбирать их в этом конкретном порядке.

Вы можете использовать вот так... где $localservicesselectlocalservices - это массив из таблицы 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);
Это даст вам массив записей в том же порядке, что и в $localservicesselectlocalservices
