我正在使用高级自定义字段,我有一个关系字段,允许用户选择要在页面上显示的三个帖子。
我希望能够将在单独<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>
这可能吗?如果是这样,是否也可以反过来这样做,所以前两个项目是包装的,最后一个是不是?
答案 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>