每次循环后重置计数器

时间:2019-11-28 15:48:27

标签: php wordpress loops counter advanced-custom-fields

我在一个自定义帖子类型循环中有一个ACF中继器,该循环中带有一个计数器,该计数器在每两个col-md-6周围产生一行。当我有偶数个col时,这很好用,但是当它不均匀时,则不行。当某个帖子的col数量不均匀时,计数器会以某种方式记住下一个帖子的信息,并且仅在第一行显示一个col。

在这里,您将找到当前代码以及正在发生的情况的一小幅图片。 不知何故,我需要在每个发布循环后重置计数器,但无法弄清楚。 wp_reset_postdata似乎不起作用。

<?php $args = array( 'post_type' => 'posttypename', 'posts_per_page' => '-1' ); $the_query = new WP_Query( $args ); ?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

<div>
    <div class="container">

        <div class="row">

            <div class="col-md-12">
                <h1><?php the_title(); ?></h1>
            </div>

        </div>

        <?php if( have_rows('row') ): ?>
            <div class="row">
            <?php while( have_rows('row') ): the_row(); $text = get_sub_field('text'); ?>

                <div class="col-md-6">      
                    <?php echo $text; ?>
                </div>

                <?php $counter++; if($counter % 2 === 0) :  echo '</div> <div class="row">'; endif; ?>
            <?php endwhile; ?>
            </div>
        <?php endif; ?>

    </div>
</div>

<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>

enter image description here

1 个答案:

答案 0 :(得分:1)

只有一个小小的变化。您需要确保在acf的循环开始之前,将计数器重置为0。

        <?php $counter = 0; //Initialize your Counter here before the Loop Starts for each Post ?> 
        <?php if( have_rows('row') ): ?>
            <div class="row">
            <?php while( have_rows('row') ): the_row(); $text = get_sub_field('text'); ?>

                <div class="col-md-6">      
                    <?php echo $text; ?>
                </div>

                <?php $counter++; if($counter % 2 === 0) :  echo '</div> <div class="row">'; endif; ?>
            <?php endwhile; ?>
            </div>
        <?php endif; ?>