Получите идентификатор сообщения от одного запроса и исключите от другого

У меня есть 2 экземпляра WP_Query класс, один показ 4 "Известных" сообщений и другой показывающие "основные" сообщения.

То, что я хочу сделать, исключают те 4 последних "Известных" сообщения из основного запроса. Я предполагаю, что это - просто случай добавления a post__not_in переменная, но как я могу получить идентификатор от первого запроса и исключить их из второго?

1
06.01.2020, 17:54
1 ответ

При выполнении цикла первого запроса просто соберите идентификаторы в массив. Пример:

// define your first query's arguments
$args1 = array(
    ... your first query args
);
$query1 = new WP_Query($args1);
while ( $query1->have_posts() ): $query1->the_post();
    // this is your loop. Do whatever you want here
    // add this in the loop to collect the post IDs
    $exclude_posts[] = $post->ID;
endwhile;

// define your second query's arguments
$args2 = array(
    'post__not_in' => $exclude_posts,
    ... rest of your parameters
);
$query2 = new WP_Query($args2);
while ( $query2->have_posts() ): $query2->the_post();
    // this is your second loop. Do whatever you want here
endwhile;
wp_reset_postdata();
2
19.02.2020, 22:54
  • 1
    Ну, Ваш код имел некоторые ошибки. Открытые скобки, неопределенные переменные ($query - таким образом, это вызывало бесконечные циклы), и избыточный wp_reset_query вызовы. Это должно быть в порядке теперь. –  Krzysiek Dróżdż♦ 29.07.2013, 12:17
  • 2
    Krzysiek Dróżdż: Я не пытался написать полный код, а скорее отобразить принцип его. –  Biranit Goren 29.07.2013, 12:38
  • 3
    я знаю. Но Вы не должны делать ошибки в нем. Открытые скобки, с помощью неопределенных переменных ($query вместо $query1) являются ошибками, не упрощениями... –  Krzysiek Dróżdż♦ 29.07.2013, 12:40

Теги

Похожие вопросы