0

while ループにマークアップを追加して、3 つの各項目を でラップし、<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 ループを使用することが重要です。

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;
   }

ああ、私はワードプレスの男ではありません:P

于 2013-03-12T18:43:09.190 に答える