#php #wordpress #wordpress-theming #custom-post-type
Вопрос:
Я пытаюсь отобразить 3 сообщения в блоге, которые были выбраны пользователем в администраторе. Заказ должен быть gridItem1, gridItem2, затем gridItem3. Я изложил свой запрос ниже, но в нем показаны выбранные записи, но в порядке дат, а не в том порядке, который я наметил.
Я поискал другие посты и добавил в 'surpress_filters' => true
и в wp_reset_query();
, но ни один из них, похоже, не помог.
Вот мой код:
$gridItem1 = get_field('large_grid_item');
$gridItem2 = get_field('second_grid_item');
$gridItem3 = get_field('third_grid_item');
// Example argument that defines three posts per page.
$args = array(
'posts_per_page' => 3,
'post_type' => array('post', 'page','programme'),
'suppress_filters' => true,
'post__in' => array($gridItem1, $gridItem2, $gridItem3),
'order_by' => 'post__in',
);
// Variable to call WP_Query.
wp_reset_query();
$the_query = new WP_Query( $args );
Кто-нибудь знает, как заставить их отображаться в том порядке, который я изложил? Спасибо
Комментарии:
1. Какова ценность этого
$gridItem1
$gridItem2
и$gridItem3
какова отдача? Являются ли ониpost slug
s? Или они содержат текстID
поста?2. Они содержат post_id
Ответ №1:
Вам не нужно использовать suppress_filters
. Тебе не нужно wp_reset_query
ни то, ни другое. Главная проблема order_by
в том, что неверно. Правильная форма его использования такова orderby
.
Вместо этого используйте следующий запрос:
$gridItem1 = get_field('large_grid_item');
$gridItem2 = get_field('second_grid_item');
$gridItem3 = get_field('third_grid_item');
$args = array(
'post_type' => array('post', 'page','programme'),
'posts_per_page' => 3,
'post__in' => array($gridItem1, $gridItem2, $gridItem3),
'orderby' => 'post__in',
);
$the_query = new WP_Query( $args );
wp_reset_postdata();
Дайте мне знать, если вам удалось заставить его работать!