我在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;
我该如何实现?谢谢!
答案 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;