你不必运行两个查询,因为你已经得到了你想要的(甚至更多)。
$args = array (
\'post_type\' => \'mytheme_posttype\',
\'post_status\' => \'publish\',
\'numberposts\' => 12,
);
$sliderQuery = new WP_Query($args);
$num_posts = $sliderQuery->post_count;
if ($num_posts >=4) {
if ($num_posts >= 12)
$postsToPrint = 12;
elseif ($num_posts >=8)
$postsToPrint = 8;
else
$postsToPrint = 4;
while ($sliderQuery->have_posts() && $postsToPrint--) {
$sliderQuery->the_post();
// Work with the post
}
}
// EDIT<好的,这里有一些关于发生了什么以及如何/为什么这样做的解释。。。
开始$postsToPrint
设置为您想要的内容(即4、8或12-取决于帖子总数)。然后我们递减计数器变量($postsToPrint--
与相同$postsToPrint = $postsToPrint - 1
). 只要我们还没有检索到我们想要的那么多帖子,我们就继续。如果我们已经达到定义的最大帖子数量,我们就会中断(即离开)循环。
因此,上述while()
是以下完全扩展版本的有效版本:
while ($sliderQuery->have_posts() && $postsToPrint > 0) {
$sliderQuery->the_post();
// Work with the post
// We\'ve handled another post, so decrement the number of posts to be handled
$postsToPrint = $postsToPrint - 1;
}
我希望这能让事情变得更清楚一点。。。