PHP循环 - 每三个项目添加一个Div

时间:2016-06-23 09:20:39

标签: php wordpress loops

这是适用于3个项目的代码,如果有3个项目的精确倍数(即,如果我们有9个项目),那么它将在末尾添加一个额外的空白div。

如果有不是3的倍数的项目(即,如果我们有8个项目)那么它可以正常工作。我不是程序员,

所以任何帮助将不胜感激:

Bellow是代码示例:

<div class="row">
    <?php 
       $i = 1;
       $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
                  'post_type' => 'projects' ) );
      echo '<div class="panel">';
      if ( $wp_query->have_posts() ) : 
         while ( $wp_query->have_posts() ) : $wp_query->the_post();
         the_title();         
       if($i % 3 == 0) { echo '</div><div class="panel">'; }
     $i++; 
      endwhile; endif;
     echo '</div>';    
  ?>

</div>

5 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,如果您的查询返回3个项目的精确倍数,则您不希望广告空div。

所以改为:

if($i % 3 == 0)

使用此:

if($i % 3 == 0 && $wp_query->post_count != $i)

我的建议是将代码编辑为:

<div class="row">
    <?php 
    $i = 1;
    $wp_query = new WP_Query(array('posts_per_page' => -1, 'post_type' => 'projects'));
    echo '<div class="panel">';
    if($wp_query->have_posts()) : while ($wp_query->have_posts()) :
         $wp_query->the_post();

         the_title();         
         if($i % 3 == 0 && $wp_query->post_count != $i){
             echo '</div><div class="panel">';
         }
         $i++; 
     endwhile; endif;
     echo '</div>';    
  ?>

</div>

但是从那以后 Max P。使用我的建议做出了更好的回答。两个代码之间的区别在于,当没有给出项目时,这个代码会创建一个空div,但是他没有。

答案 1 :(得分:1)

试试此代码

<div class="row">
    <?php 
      $i = 1;
      $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
                  'post_type' => 'projects' ) );

      if ( $wp_query->have_posts() ) : 
         while ( $wp_query->have_posts() ) :
            if($i % 3 == 1) { echo '<div class="panel">'; }
            $wp_query->the_post();
            the_title();         
            if($i % 3 == 0 || $i == $wp_query->post_count) { echo '</div>'; }
            $i++; 
         endwhile;
      endif; 
  ?>

</div>

答案 2 :(得分:0)

如果循环结束时不是3的倍数,则可以在循环结束后添加div

<div class="row">
<?php 
    $i = 1;
    $wp_query = new WP_Query( array( 'posts_per_page' => -1, 
        'post_type' => 'projects' ) );
    echo '<div class="panel">';

    if ( $wp_query->have_posts() ) : 
        while ( $wp_query->have_posts() ) :
            $wp_query->the_post();
            the_title();         
            if($i % 3 == 0) { echo '</div><div class="panel">'; }
            $i++; 
        endwhile;
    endif;
    if($i % 3 != 0) { echo '</div><div class="panel">'; }
    echo '</div>';
?>
</div>

答案 3 :(得分:0)

有很多方法可以解决这个问题,这里有一个:

<div class="row">
<?php 

  echo '<div class="panel">';
  $i = 0;
  $wp_query = new WP_Query(array('posts_per_page' => -1, 
                                 'post_type'      => 'projects'));
  if ($wp_query->have_posts()) { 
    while ($wp_query->have_posts()) {
      if($i % 3 == 0)
      {
        if ($i > 0) echo '</div>';
        echo '<div class="panel">';
      }
      $wp_query->the_post();
      the_title();         
      $i++; 
    }
    echo '</div>';    
  } 

?>
</div>

我还清理了代码并清除了没有帖子时发生的错误。

答案 4 :(得分:0)

您可以添加名为$j$j = floor($i/3)的变量。

然后if($i % 3 == 0 && $i != 3 * $j) { echo '</div><div class="panel">'; };