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

时间:2018-03-27 09:14:31

标签: html wordpress loops foreach advanced-custom-fields

我正在使用高级自定义字段,我有一个关系字段,允许用户选择要在页面上显示的三个帖子。

我希望能够将在单独<div>中选中的最后两篇帖子包装到第一篇帖子中。

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

<?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>

这可能吗?如果是这样,是否也可以反过来这样做,所以前两个项目是包装的,最后一个是不是?

1 个答案:

答案 0 :(得分:1)

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

    <?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>