0

2項目ごとにwhileループにdivタグを追加したい。

次のコードを試していますが<div></div>、最後に余分な空が追加されます。

$i = 0;
while ( have_posts() ) : the_post();
    $i++;   
    if ($i == 1){$output .= "<div>";}

    if ($i % 2 == 0){$output .= "</div><div>";}

    endwhile;
if ($i % 2 != 0){$output .= "</div>";}
4

2 に答える 2

1

</div><div>次の繰り返しの最初に追加してみてください。

$i = 0;
$div = '';
while ( have_posts() ) : the_post();
    $i++;
    $output .= $div;
    if ($i == 1){$output .= "<div>";}

    if ($i % 2 == 0){$div = "</div><div>";}
    else {$div = '';)

    endwhile;
if ($i % 2 != 0){$output .= "</div>";}
于 2012-12-30T16:04:29.947 に答える
1

ロジックをさらにラップする必要があります。要素が 0 の場合、ラッピングは必要ないからです。要素が偶数の場合、最後に余分なラッピングは必要ありません。

div_open()ここに 2 つの新しい関数を追加します。それらが何をするかは明らかだと思いますdiv_close()。疑似コードを次のように変更すると、その動作の概要がわかるはずです。

if ( have_posts(  ) )
{

    div_open(  );

    for ($counter = 0; have_posts(  ); $counter++)
    {

        the_post(  );

        ...

        if ( $counter && have_posts(  ) && $counter % 2 == 0 )
        {

            div_close(  );

            div_open(  );

        }

    }

     div_close(  );

}
于 2012-12-30T16:04:39.407 に答える