一个循环中的多个模运算符?

Multiple Modulo Operators in One Loop?

我正在使用模运算符,这样在循环 运行 3 次后,它会被包裹在 "row" div.

但是,我现在想稍微添加一下代码,这样如果循环只运行两次,它会将列的宽度更改为 "large-6" 而不是 "large-4"。

这是可能的还是会搞砸原来的模函数?

注意 - 我为此使用高级自定义字段,这是 "have_rows" 函数的来源。

当前代码:

<?php if( have_rows('content_modules') ): ?>
<?php $i = 0; while( have_rows('content_modules') ): the_row(); ?>

<?php if($i % 3 == 0): ?>
        <div class="row">
    <?php endif; ?>

    <div class="large-4 columns">
       <?php if( !empty($link) ): ?>
        <a href="<?php echo $link ?>"><img src="<?php echo $photo ?>" />          
        <h3><?php echo $title ?></h3></a>
       <?php else: ?>
        <img src="<?php echo $photo ?>" />          
        <h3><?php echo $title ?></h3>
       <?php endif; ?>
        <?php echo $content ?>
    </div>

    <?php if($i % 3 == 2): ?>
        </div>
    <?php endif; ?>

<?php $i++; endwhile; endif;?>

好的,我假设您正在使用高级自定义字段 (ACF) 或其他东西,因为据我所知(和 Google 所知)have_rows() 不是 WordPress 函数调用。

如果它是来自 ACF 的 have_rows(),它 returns 一个布尔值,顾名思义。这使您的问题更加困难,因为您需要在开始循环之前知道有多少行。

您可以在主循环之前做一个快速循环,计算行数,然后决定 CSS 需要哪个 class。这不是最佳选择,但老实说,在某些时候你必须计算它们才能做出决定。

一旦你计算了它们,你就可以决定,设置一个变量,然后在你现有的循环中,使用你新创建的变量。

很确定您必须在循环之间使用 wp_reset_query() 重置循环。不过我可能是错的。

HTH,

=C=