2015-08-03 29 views
1

我包在我的循环,每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的倍数,模数是这样做的就像它应该)我会得到一个额外的空包装。这真的不需要。

那么我应该在查询中包含哪些条件以确保我没有空的包装?

回答

6

添加包装内:

$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>'; 
+1

这工作!谢谢:)我会在2分钟内接受它。我记得我可以使用'.wrapper:empty {display:none;}',但是这样好多了,因为我没有留下没有目的的空白div。 –

相关问题