PHP循环:围绕每三个项目语法添加一个div

时间:2012-01-20 21:08:38

标签: php wordpress loops while-loop

我在wordpress中使用循环来输出帖子。我想在div中包含每三个帖子。我想在循环的每次迭代中使用一个计数器来递增,但是我不确定语法是“如果$ i是3的倍数”或“如果$ i是3 - 1的倍数”。< / p>

$i = 1;
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
     // If is the first post, third post etc.
     if("$i is a multiple of 3-1") {echo '<div>';}

     // post stuff...

     // if is the 3rd post, 6th post etc
     if("$i is a multiple of 3") {echo '</div>';}

$i++; endwhile; endif;

我该如何实现?谢谢!

4 个答案:

答案 0 :(得分:50)

为什么不执行以下操作?这将打开它并在第三个帖子后关闭它。然后在没有3的倍数显示的情况下关闭结束div。

$i = 1;
//added before to ensure it gets opened
echo '<div>';
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
     // post stuff...

     // if multiple of 3 close div and open a new div
     if($i % 3 == 0) {echo '</div><div>';}

$i++; endwhile; endif;
//make sure open div is closed
echo '</div>';

如果您不知道,%是modus运算符将在两个数字被分割后返回余数。

答案 1 :(得分:10)

使用modulus运算符:

if ( $i % 3 == 0 )

在您的代码中,您可以使用:

if($i % 3 == 2) {echo '<div>';}

if($i % 3 == 0) {echo '</div>';}

答案 2 :(得分:0)

$i = 1;
$post_count=$wp_query->found_posts;
//added before to ensure it gets opened
echo '<div>';
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
     // post stuff...

     // if multiple of 3 close div and open a new div
     if($i % 3 == 0 && $i != $post_count) {echo '</div><div>';} elseif($i % 3 == 0 && $i == $post_count){echo '</div>';}

$i++; endwhile; endif;

答案 3 :(得分:-1)

如果你不需要额外的div,你可以使用它:

 $i = 0;

 $post_count = $wp_query->found_posts;

 if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) :$wp_query->the_post();

 // If is the first post, third post etc.
 ( ($i%3) == 0 ) ? echo '<div>' : echo '';

 // post stuff...

 // if is the 3rd post, 6th post etc or after the last element

( $i == ($post_count - 1) || (++$i%3) == 0 )  ? echo '</div>' : 
echo '';

endwhile; endif;