将两个WP_Query对象拼接在一起

时间:2014-11-15 作者:bennett_an

几天来,我一直在尝试制作一个显示我所有帖子的主页,每发布两篇帖子,就会有一篇推荐信。

我找到了几十篇文章,描述了如何在循环中计数,并每隔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; ?>

1 个回复
最合适的回答,由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;

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post