【问题标题】:Define variable - use in WP loop定义变量 - 在 WP 循环中使用
【发布时间】:2014-12-02 15:15:32
【问题描述】:

我正在尝试输出一个带有(类名)变量的 WP 循环,该变量会根据它的迭代而变化,正如此正则表达式中所定义的那样。

$mod = 0;
$rows = 0;

 for ($i = 0; $i < 10; ++$i) {

        $output = " ";

        if ($rows % 2 == 1) {
                    $output = "flip";
        }


           // Build the post - includes the variable $output
       get_template_part( 'partials/loop', 'main' );

        if (++$mod % 2 == 0) {
                    $mod = 0;
                    ++$rows;
        }
  }

但这不起作用;而是输出许多重复的相同帖子而没有输出。 我显然做错了什么;可能以错误的方式解决问题。

提示:表达式测试每隔一个对,例如 11 - 00 - 11 - 00

循环,显示所需的变量位置:

 <div class="post small-12 medium-6 columns <?php echo $output; ?>" id="post-<?php the_ID(); ?>">
          <a href="<?php the_permalink() ?>"> 
              <h2 class="blog-title">
                      <?php the_title(); ?></h2>
           </a>
  </div>  <!-- ends post -->

【问题讨论】:

  • 我在这里没有看到任何正则表达式?
  • OK - 可能误解了如何调用 % 2 == 0 元素。我想这只是 PHP 中的一个测试,而不是真正的正则表达式,Nick
  • 这是一个使用模数运算符的“表达式”。
  • 第 1 步 - 正确命名。您不能突然将某些内容重命名为正则表达式。就像自行车不是汽车一样,这也不是正则表达式——它是一个简单的表达式。现在,对于第 2 步 - 您描述您想要代码做什么以及它实际做什么 - 从而向我们展示您的目标是什么。现在我要问的是——你需要检查迭代是奇数还是偶数?
  • 谢谢注意。不;我不只是检查奇数还是偶数,只是循环数是否为 3、4、7、8、11、12 等(奇数对?)。类似的代码适用于“运行你的 PHP”并成对输出代码......它只是让它与 WP 循环一起工作

标签: php wordpress loops


【解决方案1】:

您不能通过get_template_part() 将变量传递给您的模板。您需要改为 include 您的模板:

include( locate_template( 'partials/loop-main.php' ) ); 
// or whatever your template name is...

但是,这也很大程度上取决于您循环的位置(因为您没有显示它)。

有关详细信息,请参阅this answer on WPSE

所以在你的情况下,你会有类似的东西:

<?php if ( have_posts() ): ?>

    <?php // Your initial iterator/counter logic goes here... ?>

    <?php /* Start the Loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>

        <?php 
            // Test your counter to see if you need to add a class on this post

            // include() the template, rather than get_template_part() so that we can pass the
            // counter to the partial template.
            include( locate_template( 'partials/loop-main.php' ) );

            // Increment the counter
        ?>

    <?php endwhile; ?>

<?php endif; wp_reset_postdata(); ?>

【讨论】:

  • 谢谢rnevius,我已经在上面添加了。这是我的问题;知道在这种情况下循环的实际位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多