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