Php 在循环中每2个div包装一次时未关闭的div

Php 在循环中每2个div包装一次时未关闭的div,php,html,wordpress,Php,Html,Wordpress,我有下面的设置。我试着把每两个div都排成一行 当它是偶数时效果很好,但当它是奇数时,我以一个打开的div结束,并得到html错误。任何关于如何更好地确保有一个结束div的想法都将不胜感激 <?php $args = array( 'post_type' => 'portfolio-project', 'posts_per_page' => -1,

我有下面的设置。我试着把每两个div都排成一行

当它是偶数时效果很好,但当它是奇数时,我以一个打开的div结束,并得到html错误。任何关于如何更好地确保有一个结束div的想法都将不胜感激

<?php

            $args = array(            
              'post_type' => 'portfolio-project',
              'posts_per_page' => -1, 
              'orderby' => 'menu_order',
              'order' => 'ASC'
            );

            $query = query_posts($args);

        ?>

        <?php $i=1; ?>

        <?php while (have_posts()) : the_post(); ?>
            <?php if($i==1 || $i%2==1) echo '<div class="row">' ;?>

            <div class="col-sm-6">
                <?php the_title();?>
            </div>

            <?php if($i%2==0) echo '</div>' ; ?>

        <?php $i++; endwhile; wp_reset_query();?>

如果需要,您必须放置并结束关闭标记。我把计数方法改得更清楚了

    <?php $i=1;  while (have_posts()) : the_post(); ?>
        <?php if($i==1) echo '<div class="row">' ;?>

        <div class="col-sm-6">
            <?php the_title();?>
        </div>

        <?php if($i==2) echo '</div>' ; ?>

    <?php $i++; if($i>2)$i=1;endwhile; wp_reset_query();if($i==2) echo '</div>' ;?>

保持打开的div数量的计数

改变这个

<?php if($i==1 || $i%2==1) echo '<div class="row">';?>


并在关闭div时检查count==1

<?php if($count==1){ echo '</div>' ; $count=0; } ?>

试试看


代替

<?php $i++; endwhile; wp_reset_query();?>

试试看

<?php $i = 2; ?>

<?php while (have_posts()) : the_post(); ?>
    <?php if ($i == 2 || $i % 2 == 0) echo '<div class="row">'; ?>

    <div class="col-sm-6">
        <?php the_title(); ?>
    </div>

    <?php if ($i == 2 || $i % 2 == 0) echo '</div>'; ?>

    <?php $i++;
endwhile;
wp_reset_query(); ?>


您正在检查一个打开div的条件,另一个关闭div的条件,然后它将如何正确关闭endwhile后重复此行;我认为这会解决你的问题。@ManishShukla你应该作为答案发布,与你的答案相比,下面的其他答案既不清楚也不干净。@MikeThomson检查我的答案answer@ManishShukla请参阅我对您答案的评论。这是正确的,但您需要将其更改回检查$i%2==0,就像您最初的评论一样(这是因为在while循环结束时,有一个$i++发生在该条件失败之后,但现在将通过)。对吗?
<?php $i++; endwhile; wp_reset_query();?>
<?php $i = 2; ?>

<?php while (have_posts()) : the_post(); ?>
    <?php if ($i == 2 || $i % 2 == 0) echo '<div class="row">'; ?>

    <div class="col-sm-6">
        <?php the_title(); ?>
    </div>

    <?php if ($i == 2 || $i % 2 == 0) echo '</div>'; ?>

    <?php $i++;
endwhile;
wp_reset_query(); ?>