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()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 回答