ACF odd/even中继器

ACF odd/even repeater

我正在尝试使用 ACF 转发器字段创建一个两列元素。唯一的事情是我试图交替它,以便两列中的内容切换 left/right 取决于行是偶数还是奇数。

输出类似于:

Row 1: Image (left column), Description (right column)

Row 2: Description (left column), Image (right column)

Row 3: Image (left column), Description (right column)

Row 4: Description (left column), Image (right column)

.

.

.

我是这样循环的:

<section id="projects" class="container specific-margin-1">
        <div class="row specific-padding-4">
            <div class="container col-lg-12">
                <center><h2>FEATURED PROJECTS</h2></center>
            </div><!-- col-lg-12  --> 
        </div><!-- row  -->

            <!-- Repeater --> 
            <div class="row">
            <?php $row = 0; //<-- set your counter to 0
                        if(get_field('featured_projects')): ?>
            <?php while(has_sub_field('featured_projects')): ?>

                <?php if ($counter % 2 === 0) :?>
                <div class="row">
                    <!-- right column -->
                    <div class="col-lg-9 col-md-8 col-sm-6">
                        <img src="<?php the_sub_field('project_image'); ?>" />
                    </div>

                    <div class="col-lg-3 col-md-4 col-sm-6">
                            <?php the_sub_field('project_details'); ?>
                    </div><!-- right column -->
                </div>

                <?php else: ?>

                <div class="row">
                    <!-- left column -->
                    <div class="col-lg-3 col-md-4 col-sm-6">
                        <?php the_sub_field('project_details'); ?>
                    </div>

                    <div class="col-lg-9 col-md-8 col-sm-6">
                        <img src="<?php the_sub_field('project_image'); ?>" />
                    </div><!-- left column -->
            </div>
            <?php endif; ?>

            <?php $row++; endwhile; ?>

            <?php endif; ?>
        </div><!-- Repeater -->
    </section>

确保将 ACF 图像字段更改为 'Image Array':

ACF Image Field

<!-- Repeater -->
<div class="row">
  <?php $i=0 ; if(get_field( 'featured_projects')): ?>
  <?php while(has_sub_field( 'featured_projects')): $i++; ?>
  <?php $image=get_sub_field( 'project_image'); ?>
  <div class="row">
    <!-- right column -->
    <div class="col-lg-9 col-md-8 col-sm-6">
      <?php if (($i % 2)==0 ): ?>
      <?php the_sub_field( 'project_details'); ?>
      <?php else: ?>
      <img src="<?php echo $image['url']; ?>" />
      <?php endif; ?>
    </div>

    <div class="col-lg-3 col-md-4 col-sm-6">
      <?php if (($i % 2)==0 ): ?>
      <img src="<?php echo $image['url']; ?>" />
      <?php else: ?>
      <?php the_sub_field( 'project_details'); ?>
      <?php endif; ?>
    </div>
    <!-- right column -->
  </div>

  <?php endwhile; ?>

  <?php endif; ?>
</div>
<!-- Repeater -->

如果有人正在寻找最简单的答案(要在 odd/even 中划分行),我们可以使用 get_row_index() 函数来检查当前行。

代码格式应该是这样的:

while( have_rows('featured_projects') ): the_row();

    if( get_row_index() % 2 == 0 ){
        
        // this is an even row
        
    } else {
        
        // this is an odd row
        
    }

endwhile;