结束语在一个循环中每3个元素留下一个空的包装
问题描述:
我包在我的循环,每3个元素包装的div像这样:结束语在一个循环中每3个元素留下一个空的包装
$query = array(
'post_type' => 'post',
);
$i = 1;
$posts = new WP_Query($query);
$out = '<div class="wrapper">';
if ($posts->have_posts()){
while ($posts->have_posts()){
$posts->the_post();
$out.= '<div class="content">
//content here
</div>';
if($i % 3 == 0) {
$out .= '</div><div class="wrapper">';
}
$i++;
}
}
$out .= '</div>';
wp_reset_postdata();
return '<section>'.$out.'</section>';
它创建了一个良好的包装HTML减一个点点东西,困扰着我:
<section>
<div class="wrapper">
<div class="content"></div>
</div>
<div class="wrapper">
<div class="content"></div>
</div>
<div class="wrapper"></div>
</section>
如果我正好有6个帖子(或3的倍数,模数是这样做的就像它应该)我会得到一个额外的空包装。这真的不需要。
那么我应该在查询中包含哪些条件以确保我没有空的包装?
答
添加包装内:
$query = array(
'post_type' => 'post',
);
$i = 1;
$posts = new WP_Query($query);
$out = '';
$endingNeeded = false;
if ($posts->have_posts()){
while ($posts->have_posts()){
if($i % 3 == 1) {
$out .= '<div class="wrapper">';
$endingNeeded = true;
}
$posts->the_post();
$out.= '<div class="content">
//content here
</div>';
if($i % 3 == 0) {
$out .= '</div>';
$endingNeeded = false;
}
$i++;
}
}
if($endingNeeded) {
$out .= '</div>';
}
wp_reset_postdata();
return '<section>'.$out.'</section>';
这工作!谢谢:)我会在2分钟内接受它。我记得我可以使用'.wrapper:empty {display:none;}',但是这样好多了,因为我没有留下没有目的的空白div。 –