Php 在循环中每包装3个元素,就会留下一个空包装

Php 在循环中每包装3个元素,就会留下一个空包装,php,wordpress,Php,Wordpress,我将循环中的每3个元素包装在一个包装器div中,如下所示: $query = array( 'post_type' => 'post', ); $i = 1; $posts = new WP_Query( $query ); $out = '<div class="wrapper">'; if ($posts->have_posts()){ while ($posts->have_posts()){ $posts->the_

我将循环中的每3个元素包装在一个包装器div中,如下所示:

$query = array(
    'post_type' => 'post',
);

$i = 1;

$posts = new WP_Query( $query );
$out = '<div class="wrapper">';
if ($posts->have_posts()){
    while ($posts->have_posts()){
        $posts->the_post();

        $out.= '<div class="content">
            //content here
        </div>';

        if($i % 3 == 0) {
            $out .= '</div><div class="wrapper">';
        }

        $i++;

    }
}
$out .= '</div>';
wp_reset_postdata();


return '<section>'.$out.'</section>';
这创造了一个好的包装html减去一个困扰我的小东西:

<section>
    <div class="wrapper">
        <div class="content"></div>
    </div>
    <div class="wrapper">
        <div class="content"></div>
    </div>
    <div class="wrapper"></div>
</section>
如果我有6篇文章,或者是3的任意倍数,而modulo也应该这样做,我会得到一个额外的空包装。这真的不需要


那么,我应该在查询中包含什么条件来确保我不会得到空的包装器呢?

在其中添加包装器:

$query = array(
    'post_type' => 'post',
);

$i = 1;

$posts = new WP_Query( $query );
$out = '';
$endingNeeded = false;
if ($posts->have_posts()){
    while ($posts->have_posts()){

        if($i % 3 == 1) {
            $out .= '<div class="wrapper">';
            $endingNeeded = true;
        }

        $posts->the_post();

        $out.= '<div class="content">
            //content here
        </div>';

        if($i % 3 == 0) {
            $out .= '</div>';
            $endingNeeded = false;
        }

        $i++;
    }
}

if($endingNeeded) {
    $out .= '</div>';
}

wp_reset_postdata();


return '<section>'.$out.'</section>';

在内部添加包装:

$query = array(
    'post_type' => 'post',
);

$i = 1;

$posts = new WP_Query( $query );
$out = '';
$endingNeeded = false;
if ($posts->have_posts()){
    while ($posts->have_posts()){

        if($i % 3 == 1) {
            $out .= '<div class="wrapper">';
            $endingNeeded = true;
        }

        $posts->the_post();

        $out.= '<div class="content">
            //content here
        </div>';

        if($i % 3 == 0) {
            $out .= '</div>';
            $endingNeeded = false;
        }

        $i++;
    }
}

if($endingNeeded) {
    $out .= '</div>';
}

wp_reset_postdata();


return '<section>'.$out.'</section>';

这管用!谢谢:我会在2分钟内接受。我记得我本可以使用.wrapper:empty{display:none;},但这要好得多,因为我没有留下没有用途的空div:这很有效!谢谢:我会在2分钟内接受。我记得我本可以使用.wrapper:empty{display:none;},但这要好得多,因为我没有留下没有任何用途的空div: