while循环中的项目组

时间:2013-03-12 18:29:49

标签: php html

我想在while循环中添加一些标记,以便每个项目都包含在<ul>中,每个ul都应该包含在div中。最多可以有6个项目,我希望获得以下输出:

<div class="one">
    <ul>
        <li>...</li>
        <li>...</li>
        <li>...</li>
    </ul>   
</div>

<div class="two">
    <ul>
        <li>...</li>
        <li>...</li>
        <li>...</li>
    </ul>   
</div>

我正在尝试以下代码:

<div class="one">
    <ul>    
    <?php 
        $i = 0 ; 
        while (have_posts()) : the_post();  
            $i++; ?>            

            <li>...</li>    

            <?php
                if ($i === 3){
                    echo "</ul></div><div class='two'><ul>";
                    $right_div = true;
                }           
            ?>
        } 
        if ($right_div){
                </ul></div>
            <?php } ?>      
?>

如果至少有3个项目,它可以正常工作,但是如果少于3个,则会因为不关闭ul和div而中断代码。

使用 while循环非常重要,因为它是WordPress主题的一部分,它使用while循环来获取帖子。

3 个答案:

答案 0 :(得分:1)

我不确定我明白了,但我认为问题是:

        if ($right_div){
            </ul></div>
        <?php } ?>   

这不应该是一个应该始终打印的条件。

答案 1 :(得分:0)

如果我理解正确,你说你想要 将3件组中的东西分组,但如果您有11件物品或其他东西 就像它打破了。如果是这种情况,则在最后一次迭代中 在while循环中你应该关闭ul和div元素。

像这样:

if(condition){
     echo "</ul></div>";
}

答案 2 :(得分:0)

参考http://codex.wordpress.org/Function_Reference/have_posts

   function more_posts() {
      global $wp_query;
      return $wp_query->current_post + 1 < $wp_query->post_count;
   }

   if (!more_posts()){
       echo "</ul></div><div class='two'><ul>";
       $right_div = true;
   }

哦,我不是一个wordpress的家伙:P