我将返回页面上的所有帖子。每六个帖子我想逐步显示特定类别的帖子。每次这个过去我想在循环中递增,所以在页面上的特定类别中没有重复相同的帖子。
我已经成功地从页面上每六个帖子上显示该类别的帖子。我只是无法让循环工作,所以它逐渐显示页面上每第六个点的类别中的下一个帖子。目前它只是在数组中显示相同的第一个帖子。
<?php while ($query->have_posts()) {
if( $query -> post_count > 0 ) {
$postnum = 0;
foreach( $query -> posts as $post ) {
$postnum++;
if( $postnum%5 == 0 ) {
$args = array( 'cat' => 1824, 'posts_per_page' => 1, );
query_posts( $args );
$current_post = 0;
while ( have_posts() ) : the_post();
$current_post++;
echo "CTA Card Specific Info";
endwhile;
}
$query->the_post();
?>```
你可以将anther query_posts()
嵌入第一个并使用WP_Query
跳过你已经输出的帖子,而不是使用offset
parameter。我没有测试过这段代码,但以下内容可能有效:
$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
可以mess up your pagination。我不认为这会在这里发挥作用,但如果你注意到可能是罪魁祸首的分页问题。