我喜欢将多个查询合并为一个结果。
下面代码中的 $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(); ?>
$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(); ?>