Wordpress/ACF 关系字段:将最后两个帖子包装在一个单独的 div 中

Wordpress/ACF relationship field: wrap last two posts in a separate div

我正在使用高级自定义字段,我有一个关系字段,允许用户 select 三个 post 显示在页面上。

我希望能够将最后两个 posts selected 包装在一个单独的 <div> 到第一个 post.

这是我正在使用的示例循环:

<?php 

$items = get_field('my_items');
if( $items ):

?>

<div class="my-items">
  <?php foreach( $items as $item ): ?>
    <div class="item">...</div>
  <?php endforeach; ?>
 </div>

<?php endif; ?>

这给了我:

<div class="my-item">
  <div class="item">...</div>
  <div class="item">...</div>
  <div class="item">...</div>
</div>

这是我想要的结果:

<div class="my-item">
  <div class="item">...</div>
  <div>
    <div class="item">...</div>
    <div class="item">...</div>
  </div>
</div>

这可能吗?如果是这样,是否也可以反向执行此操作,以便包装前两项而最后一项不包装?

执行此类操作的最简单方法就是初始化一个计数器,然后在循环中的条件中使用它,最后递增计数器。下面的代码可以满足您的需求;

    <?php 

    $items = get_field('my_items');
    if( $items ):
    $counter = 0;
    ?>

    <div class="my-items">
      <?php foreach( $items as $item ): ?>
        <?php if ($counter == 1 ) { echo '<div>'; } ?>
        <div class="item">...</div>
        <?php if ($counter == 2 ) { echo '</div>'; } ?>
        <?php counter++; ?>
      <?php endforeach; ?>
     </div>

    <?php endif; ?>

如果您想包装前两项,则代码为;

    <div class="my-items">
      <?php foreach( $items as $item ): ?>
        <?php if ($counter == 0 ) { echo '<div>'; } ?>
        <div class="item">...</div>
        <?php if ($counter == 1 ) { echo '</div>'; } ?>
        <?php counter++; ?>
      <?php endforeach; ?>
     </div>