几天来,我一直在尝试制作一个显示我所有帖子的主页,每发布两篇帖子,就会有一篇推荐信。
我找到了几十篇文章,描述了如何在循环中计数,并每隔n次放置一个东西。这没问题,但问题是,运行循环a,然后每隔“n”次,放置循环B中的下一项。WP希望您在启动另一个循环之前重置一个循环。
因此,我需要分别查询每个集合,解析查询,并在传递到循环之前按照我想要的顺序构建一个新的集合。问题是,WP_Query objects
不是数组。所以我不知道该怎么做。除了一句台词外,我把整件事都安排好了。我推迟了写这行代码,就像我写数组一样,所以很明显我正在尝试做什么。
<?php $testimonials = new WP_Query( array(\'fields\'=>\'ids\', \'post_type\'=>\'testimonial\', \'posts_per_page\' => -1)); ?>
<?php $others = new WP_Query( array(\'fields\'=>\'ids\', \'post_type\'=>\'post\', \'posts_per_page\' => -1)); ?>
<?php $combined = new WP_Query() ?>
<?php $t = 0; $o = 0; ?>
<?php $total_t = $testimonials->post_count; $total_o = $others->post_count; ?>
<?php while ($total_t > $t && $total_o - 1 > $o ): ?>
<!-- PROBLEM LINE -->
<?php array_push($combined, $testimonials[$t], $others[$o], $others[$o+1]); ?>
<!-- /PROBLEM LINE -->
<?php $t++; $o = $o + 2; ?>
<?php endwhile; ?>
最合适的回答,由SO网友:Cyclonecode 整理而成
我不确定我是否理解这个问题,但如果您不想在每n次迭代中显示resultset B中的内容,您可以使用next_post()
或者直接打电话the_post()
在第二个查询对象上。当然,您还需要进行检查,以便在结果中留下足够的项目,等等:
$query1 = new WP_Query(array(\'post_type\' => \'post\'));
$query2 = new WP_Query(array(\'post_type\' => \'page\'));
// loop through each post and display the title of a page from the second query
// for every third item
while($query1->have_posts()):
$query1->the_post();
print get_the_title().\'<br />\';
// grab a entry from our second query if we haven\'t reached the end yet
if(($query1->current_post + 1) % 3 == 0 && ($query2->current_post + 1) < $query2->post_count):
$query2->the_post();
print get_the_title().\'<br />\';
endif;
endwhile;