我的循环显示两列中的帖子:
<?php
if (have_posts()): while (have_posts()) : the_post();
$count++;
?>
<?php if ($count == 1) : ?>
<div class="home-ci-row">
<div style="padding: 0px;" class="main-column-item-wrap">
CONTENT OF POST : Title, Thumbnail, Excerpt... etc
</div>
<div class="home-ci-gap"></div><!-- /* the gap */ -->
<?php elseif ($count == 2) : ?>
<div style="padding: 0px;" class="main-column-item-wrap">
CONTENT OF POST : Title, Thumbnail, Excerpt... etc
</div> <!-- main-column-item-wrap -->
</div><!-- /* home-ci-row*/ -->
<?php $count = 0; ?>
<?php else : ?>
// No posts
<?php endif; endwhile; endif; ?>
您可以看到<div class="home-ci-row">
在第一次计数和&amp;在第二个</div>
所以当我的循环有一个偶数个帖子效果很好,但是奇数它不会关闭div
所以我的想法是:如果循环有偶数
如果循环有奇数个帖子
答案 0 :(得分:2)
顺便说一句,你可以这样做:
<?php
$count=0;
while(have_posts()){
if($count%2==0){
echo '<div class="home-ci-row">';
//draw your left div here
}else if($count%2==1){
//draw your gap here
//draw your right div here
echo '</div>';
}
$count++;
}
//close div if count is an odd number
if($count%2==1) echo '</div>';
?>
答案 1 :(得分:1)
可以换成for循环吗?这是你需要的吗?
for ($i = 0; $i < $numberOfElements; $i++)
{
//if (odd number) && (this is the last element)
if (($i % 0 == 1) && ($i == $numberOfElements - 1))
{
//Special Case
}
else
{
//Normal Case
}
}
警告:注意错误,PHP不是我最强的语言
答案 2 :(得分:0)
引自his answer:
你可以更容易地做到这一点。在制作可以通过浮点数实现的布局时,不需要每隔一次声明一行。
在我的代码示例中,我只是使用$count
来确定HTML元素的类。结合显示的帖子总数。
如果$wp_query->post_count
到达的帖子总数$count
并且总数是奇数,我会将元素分类为fullwidth
。以同样的方式,我确定它是第一个还是第二个(参见IF声明)。
之后我需要做的就是为Loop中的每个HTML元素输出相应的Class。除了班级之外,没有任何元素彼此不同。
我使用PHP中的Modulo
运算符(%
)来确定奇数/偶数。如果我使用1
并且$count % 2
是奇数,则会提供$count
。如果您对此运算符不确定,请阅读here。
所以你的代码看起来像这样:
<?php
$count = 0;
if (have_posts()): while (have_posts()) : the_post();
if ( ++$count == $wp_query->post_count && ( $wp_query->post_count % 2 ) == 1 ) {
// if final count is reached AND final count is odd
// full width item
$postclass = "fullwidth";
$opentag = '';
$closingtag = '</div>';
} else if ( ( $count % 2 ) == 1 ) {
// if $count is odd it is the first item in a 'row'
$postclass = "halfwidth first";
$opentag = '<div class="home-ci-row">';
$closingtag = '';
} else {
// second item in a row
$postclass = "halfwidth second";
$opentag = '';
$closingtag = '</div>';
}
?>
<?php echo $opentag; ?>
<div class="main-column-item-wrap <?php echo $postclass; ?>">
CONTENT OF POST : Title, Thumbnail, Excerpt... etc
</div><!-- main-column-item-wrap -->
<?php echo $closingtag; ?>
<?php endwhile; endif; ?>