WP_query для получения двух последних записей, затем другой цикл для получения следующих трех
Моя конечная цель - вывести 5 последних записей, независимо от категории.
Сначала я хочу создать WP_Query
для получения двух последних записей и вставить их в определенную HTML структуру.
Затем я хочу создать другой WP_Query
для получения следующих трех записей и вставить их в отличающуюся HTML структуру.
Я пробовал несколько фрагментов кода, и в результате каждый WP_Query
начинает с самой последней записи в обеих HTML структурах. Существует ли аргумент, который я могу использовать, чтобы указать второму запросу пропустить первые две записи?

Выполнить один wp_query для post_per_page = 2 и получить ID этих 2 записей в массив, чтобы исключить их в следующих 3 необходимых записях
<?php
// Запрос
$next_args = array(
'post_type' => '<ваш_тип_записи>',
'post_status' => 'publish',
'posts_per_page'=>2,
'order'=>'DESC',
'orderby'=>'ID',
);
$the_query = new WP_Query( $args );
// Цикл
if ( $the_query->have_posts() ) {
$not_in_next_three = array();
while ( $the_query->have_posts() ) {
$the_query->the_post();
// ваш HTML для последних 2 записей
$not_in_next_three[] = get_the_ID();
}
} else {
// записи не найдены
}
/* Восстановить оригинальные данные записи */
wp_reset_postdata();
Теперь созданный выше массив будет исключен в wp_query при получении следующих 3 записей
// Запрос
$next_args = array(
'post_type' => '<ваш_тип_записи>',
'post_status' => 'publish',
'posts_per_page'=>3,
'order'=>'DESC',
'orderby'=>'ID',
'post__not_in'=>$not_in_next_three
);
$next_the_query = new WP_Query( $next_args );
// Цикл
if ( $next_the_query->have_posts() ) {
while ( $next_the_query->have_posts() ) {
$next_the_query->the_post();
// ваш HTML для следующих 3 записей
}
} else {
// записи не найдены
}
/* Восстановить оригинальные данные записи */
wp_reset_postdata();
?>

Добавьте пояснение к вашему коду и используемому методу. Это явно можно сделать одним запросом, а не двумя.

Да, можно сделать одним запросом... но автор вопроса просил именно 2 wp_query.. поэтому...

Я решил эту проблему, выполнив два WP_Query на одной странице и используя параметр offset во втором наборе аргументов.
Хотелось бы узнать, как использовать один запрос и достичь того же результата.

Вы можете использовать параметры пагинации WP_Query
.
Однако использование двух запросов для достижения этой цели неэффективно. Лучшее решение — использовать один запрос и изменять вашу разметку на основе значения свойства $current_post
в WP_Query
, которое (при использовании в цикле) отражает индекс текущего обрабатываемого поста на текущей странице результатов.
