WP 如何组合多个查询?

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

我喜欢将多个查询合并为一个结果。

下面代码中的 $args_a 和 $args_b 被简化以总结我的问题。我喜欢将 2 个或更多查询合并到一个结果中。

它们不应该互相覆盖,所以我认为“合并”不是组合这种情况的正确方法。

现在,我怎样才能将它们组合在一起?

<?php $args_a = array( 'posts_per_page' => 9, 'paged' => $paged, 'category_name' => 'shinmatsudo', 'category__in' => array( 227 ), 'category__not_in' => array( 3 ), 'meta_query' => array( 'relation' => 'AND', array( 'key' => '1b', 'compare' => 'NOT EXISTS' ), array( 'key' => '1d', 'compare' => 'NOT EXISTS' ), ), );?> <?php $args_b = array( 'paged' => $paged, 'posts_per_page' => 9, 'category_name' => 'matsudo', 'category__in' => array( 329 ), 'category__not_in' => array( 3 ), 'meta_query' => array( 'relation' => 'and', array( 'key'=> '2a', 'value' => array('2020-02-01' , '2020-06-01'), 'compare' => 'BETWEEN', 'type' => 'DATE', ), ), ); ?> <?php global $post; $my_posts= get_posts($args_b); $my_posts= get_posts($args_a); foreach($my_posts as $post):setup_postdata($post);?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h1 class="entry-title"><?php the_title(); ?></h1> </div> <?php endforeach; ?> <?php wp_reset_postdata(); ?>
    
php wordpress
1个回答
2
投票
您的代码存在的问题是您正在覆盖

$my_posts

 变量。想想你的代码在做什么:

global $post; $my_posts= get_posts($args_b); $my_posts= get_posts($args_a);
您正在将 

$my_posts

 重新分配给第二个 
get_posts
,因此 
$args_b
 将始终被覆盖。

您可以尝试使用

array_merge()

 获取两个 
get_posts
 的结果并将它们组合成一个数组。

global $post; $my_posts= array_merge( get_posts($args_b), get_posts($args_a) ); foreach($my_posts as $post):setup_postdata($post);?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h1 class="entry-title"><?php the_title(); ?></h1> </div> <?php endforeach; ?> <?php wp_reset_postdata(); ?>
    
© www.soinside.com 2019 - 2024. All rights reserved.