0

我想在 while 循环中添加一些标记,以便每三个项目都包含在 a 中<ul>,并且每个项目都ul应该包含在 a 中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 循环来获取帖子。

4

3 回答 3

1

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

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

这不应该是一个条件,应该总是打印出来。

于 2013-03-12T18:39:48.343 回答
0

如果我理解正确,您是说您想将事物分组为 3 个一组,但如果您有 11 个项目或类似的东西,它就会中断。如果是这种情况,那么在 while 循环的最后一次迭代中,您应该关闭 ul 和 div 元素。

像这样:

if(condition){
     echo "</ul></div>";
}
于 2013-03-12T18:43:01.617 回答
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

于 2013-03-12T18:43:09.190 回答