定义变量 - 在WP循环中使用

时间:2014-12-02 15:15:33

标签: php wordpress loops

我试图输出一个带有(类名)变量的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 -->

1 个答案:

答案 0 :(得分:0)

您无法通过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(); ?>