【问题标题】:Multiple Modulo Operators in One Loop?一个循环中有多个模运算符?
【发布时间】:2015-01-26 17:28:43
【问题描述】:

我正在使用模运算符,以便在循环运行 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;?>

【问题讨论】:

  • while 语句的开头在哪里?
  • 不错的收获!固定的。我忘了在原帖中缩进几行。

标签: php wordpress modulo


【解决方案1】:

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

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

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

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

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

HTH,

=C=

【讨论】:

  • 你是对的 - 我使用了高级自定义字段。我将把该注释添加到原始帖子中。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多