Сообщения, не заказанные по почте__в

#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();
 

WP_Query Документы

Дайте мне знать, если вам удалось заставить его работать!