while循环添加额外的空元素

时间:2015-04-19 02:24:04

标签: php wordpress advanced-custom-fields

我使用以下内容来包装每3个div,并且如果只有2个,则以相同的方式包装4-5。(同样适用于每6个,4个等)

当它只有3个div /元素时,它们就会被包裹起来。但是随后也会创建一个空元素。所以在下面的例子中。假设你有每个列表项3个div。好吧,在这一个你只有3,但创建一个空的“列表项”,什么都没有。如何附加我的代码,以便它不会创建一个空元素? (在我的情况下,使用带有柔性滑板的中继器,正在制作空滑板)

<?php //going to wrap every 3 in this example
if ( get_field( 'your_repeater_name' ) ): ?>

<?php $index = 1; ?>
<?php $totalNum = count( get_field('your_repeater_name') ); ?>

<li>
<?php while ( has_sub_field( 'your_repeater_name' ) ): ?>

    <div class="col-sm-4">
        <?php the_sub_field( 'your_sub_field' ); ?>
    </div>
    <? if ($index % 3 == 0) : ?>
        <? if ($index < $totalNum) : ?>
            // more rows, so close this one and start a new one
            </li>
            <row>
        <? elseif ($index == $totalNum) : ?>
            // last element so close row but don't start a new one
            </li>
        <? endif; ?>

    <? endif; ?>

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

<?php endif; ?>

1 个答案:

答案 0 :(得分:0)

尝试更改&#34;循环&#34;你的脚本的一部分是这样的:

<li>
<?php while ( has_sub_field( 'your_repeater_name' ) ): ?>

    <div class="col-sm-4">
        <?php the_sub_field( 'your_sub_field' ); ?>
    </div>
    <?php if ($index % 3 == 0 && $index < $totalNum) : ?>
        </li><li>
    <?php endif; ?>

    <?php $index++; ?>
<?php endwhile; ?>
</li>

不同之处在于循环外的最后一个</li>(因为它无论如何都需要关闭,不需要将它放在if内),所以现在你只需要必须检查$index < $totalNum是否要插入另一行。