我想输出最新的5篇帖子。但前2篇文章的模板必须与其他3篇文章不同。因此,我创建了两个查询。
The first one shows the 2 posts:
<?php
$loop = new WP_Query( array(
\'post_type\' => \'Post\',
\'posts_per_page\' => 2
)
);
?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php get_template_part(\'loop-templates/blog-item-big\'); ?>
<?php endwhile; wp_reset_query(); ?>
The other query must show the other posts (limited with 3 posts):
<?php
$loop = new WP_Query( array(
\'post_type\' => \'Post\',
\'offset\' => 2,
\'post_per_page\' => 3
)
);
?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php get_template_part(\'loop-templates/blog-item-small\'); ?>
<?php endwhile; wp_reset_query(); ?>
第一个循环似乎工作得很好。它只显示最后添加的2篇帖子。由于offset参数,第二个循环似乎在第二个post之后开始。但它显示了3个以上的帖子。
这个查询有什么问题?
最合适的回答,由SO网友:Sally CJ 整理而成
因为您使用了post_per_page
应该是什么时候posts_per_page
(请注意复数“posts”)。
但实际上,您可以使用相同的查询并使用计数器来显示不同的模板部分:
$loop = new WP_Query( array(
\'post_type\' => \'post\',
\'posts_per_page\' => 5,
) );
$c = 1; // post counter
while ( $loop->have_posts() ) : $loop->the_post();
if ( $c < 3 ) : // the first and second posts
get_template_part( \'loop-templates/blog-item-big\' );
else :
get_template_part( \'loop-templates/blog-item-small\' );
endif;
$c++;
endwhile;
/* Or a simpler loop..
$c = 1; // post counter
while ( $loop->have_posts() ) : $loop->the_post();
$template = \'blog-item-\' . ( $c < 3 ? \'big\' : \'small\' );
get_template_part( \'loop-templates/\' . $template );
$c++;
endwhile;
*/
// not wp_reset_query()
wp_reset_postdata();