使用 WP_Query 的两个查询附加第二个查询以分页结束

问题描述 投票:0回答:1

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

该页面将有来自第一个循环的 3 个,然后是来自第二个循环的 3 个。

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

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

这是我的循环(由于长度原因我排除了参数)

<?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; ?>
php wordpress wordpress-theming
1个回答
5
投票

因为

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;
?>
© www.soinside.com 2019 - 2024. All rights reserved.