使用WP_Query的两个查询将第二个查询附加到Pagination结束

时间:2013-08-22 16:03:32

标签: wordpress-theming wordpress

我要做的是为属性创建两个查询。一个人将根据普通查询检索常规结果。第二个查询将检索与第一个查询密切相关的属性。我能够运行两个查询并检索所有结果,其中posts_per_page设置为无限制且没有分页。添加分页时的问题是两个循环都会运行并在每个页面上显示帖子。

页面从第一个循环开始有3个,第二个循环开始有3个。

我尝试将两个查询合并为一个并显示它们,但会发生相同的结果。 3和3.

我想我需要以某种方式附加以确保第二个循环在第一个循环之后获得输出。有什么想法吗?

以下是我的循环(因长度而排除了args)

<?php 
$queryOne = new WP_Query($args);
$queryTwo = new WP_Query($args2);
$results = new WP_Query(); 

$results->posts = array_merge($queryOne->posts, $queryTwo->posts);
?>      

<?php foreach($results->posts as $post) : ?>
  <?php setup_postdata( $post ); ?>
  <?php get_template_part( 'property-listing' ); ?>

<?php endforeach; ?>

1 个答案:

答案 0 :(得分:4)

由于parse_query依赖于post_count,您必须添加两个post_counts。在您的示例中,未设置post_count。如果你填充post_count它应该工作。只需在最后添加:

$results->post_count = $queryOne->post_count + $queryTwo->post_count;

完整的例子:

<?php 
  $queryOne = new WP_Query($args);
  $queryTwo = new WP_Query($args2);
  $results = new WP_Query(); 

  $results->posts = array_merge($queryOne->posts, $queryTwo->posts);
  $results->post_count = $queryOne->post_count + $queryTwo->post_count;

  foreach($results->posts as $post) : 
     setup_postdata( $post );
     get_template_part( 'property-listing' );

  endforeach;
?>