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


Multiple Modulo Operators in One Loop?

我正在使用模运算符,以便在循环运行 3 次后,它被包装在一个"行"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(),则返回一个布尔值,顾名思义。这使您的问题更加困难,因为您需要在开始循环之前知道有多少行。

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

对它们进行计数后,您可以做出决定,设置一个变量,然后在现有循环中,使用新创建的变量。

很确定您必须在循环之间wp_reset_query()重置循环。不过,我可能错了。

呵呵,

=C=