我正在使用以下内容为每两个帖子中的幻灯片创建幻灯片。
<?php $i = 0; $slideshow_query = new WP_Query("showposts=6&cat=10"); ?>
<div id="slideshow-posts">
<div class="newslide">
<?php while ($slideshow_query->have_posts()) : $slideshow_query->the_post(); $do_not_duplicate = $post->ID; $i++; ?>
//my content
<?php if ($i == 2) { ?></div> <div class="newslide"><?php $i = 0; } ?>
<?php endwhile; ?>
</div>
问题是它在最后创建了一张空白幻灯片 - 除了最后一次发布偶数帖子之外,我怎样才能让它每两个帖子(或每个偶数帖子)创建新闻幻灯片?
感谢
答案 0 :(得分:1)
您可能正在寻找的运算符称为模数或模数,并返回分组的其余部分:
$foo = 5 % 3; // 5 = 1*3 + a remainder of 2
$bar = 17 % 5; // 17 = 2*5 + a remainder of 2
$baz = 42 % 6; // 42 = 7*6 + a remainder of 0
当使用除数为2时,此运算符可以方便地识别循环中的偶数/奇数行:
0 % 2 => 0
1 % 2 => 1
2 % 2 => 0
3 % 2 => 1
4 % 2 => 0
…
或者在你的情况下是这样的:
<?php $i = 0; $slideshow_query = new WP_Query("showposts=6&cat=10"); ?>
<div id="slideshow-posts">
<div class="newslide">
<?php while ($slideshow_query->have_posts()) : $slideshow_query->the_post(); ?>
//my content
<?php if ($i % 2 == 0): /* even: */ ?>
</div><div class="newslide">
<?php elseif ($i+1 == $slideshow_query->post_count): /* last: */ ?>
</div>
<?php endif; ?>
<?php $i++; /* iterate in the end */ ?>
<?php endwhile; ?>
</div>
为了找出你已经到达最后一篇文章,你可以将$i + 1
(因为我们从0开始计算)与查询返回的全部项目进行比较(在你的例子中最多6)。如果匹配,请关闭<div>
。
<强>更新强>
我根据我的评论扩展了上面的例子。这没有经过测试,但我相信这就是我记得它的工作方式(帖子计数)。