Вместо использования query_posts()
вы можете вкладывать пыльник WP_Query
внутрь первого и использовать параметр offset
, чтобы пропустить уже выведенные вами сообщения. Я не тестировал этот код, но что-то вроде следующего может работать:
$post_count = 0;
$category_count = 0; // for determining offset
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'category__not_in' => 1824, // or something like this to prevent duplicates
);
$post_query = new WP_Query ( $args );
if ( $post_query->have_posts() ) {
while ( $post_query->have_posts() ) : $post_query->the_post();
$post_count++;
echo "Regular Post Here";
if ( $post_count % 6 === 0 ) {
$args = array(
'cat' => 1824,
'posts_per_page' => 1,
'offset' => $category_count,
);
$category_query = new WP_Query( $args );
$category_count++;
if ( $category_query->have_posts() ) {
while ( $category_query->have_posts() ) : $category_query->the_post();
echo "CTA Card Specific Info";
endwhile; $post_query->reset_postdata();
}
}
endwhile;
}
Как только вы закончили с внутренним циклом, обязательно вызовите reset_postdata()
, чтобы изменить контекст запроса обратно на основной запрос.
Стоит также отметить, что использование offset
может испортить вашу нумерацию страниц . Я не думаю, что это вступит в силу здесь, но если вы заметите проблемы с разбиением на страницы, которые могут быть виновником.