这比我想象的要困难得多。似乎有多个while
如果WordPress耗尽了所有的帖子,那么循环会让它感到困惑。特别是,如果while
循环到达帖子的末尾,下一个while
循环从头开始,导致显示重复项。
要绕过这个问题,我们可以使用a(不是很优雅)do_not_duplicate
数组来跟踪我们已经显示的帖子。
以下是我的解决方案。我使用了我看到的一个技巧(使用foreach
) 使其能够灵活地创建更多列/更改每列中的帖子数量。我希望这些评论能解释一切。。。
<?php if ( have_posts() ) : ?>
<?php
//Can have as many loops as we like - set how many to appear in each loop.
//In this example, 4 columns of length 1, 1, 4 and 5 posts respectively.
$post_counts = array(1, 1,4, 5);
foreach ($post_counts as $iteration => $max_count) {
$count = $max_count;
/* Give our column specific id/class for styling */?>
<div id="column-<?php echo $iteration+1; ?> ">
//Loop inside the column
<?php while ( have_posts() and $count-- ) :
the_post();
/* Check if post has already been shown */
if (in_array($post->ID, $do_not_duplicate)) continue;
/* If not, add it to our do_not_duplicate array and show it */
$do_not_duplicate[] = $post->ID; ?>
<a href="<?php the_permalink() ?>" title="" ><?php the_title(); ?></a> </br>
<?php endwhile; ?>
</div>
<?php }?>
<?php else : ?>
<p>No posts</p>
<?php endif; ?>
这很管用,但一定有更整洁的方式。。。?