我的问题非常简单,我试图获得两个投资组合帖子(来自插件)和有“投资组合”类别的文章(自己制作)。
$args = array(
'post_type' => 'portfolio',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'portfolio',
)
)
);
$query = new WP_Query($args);
看起来post_type和tax_query之间的关系是AND,我需要一个OR,我该怎么做?
我试过遵循官方文档,但我被卡住了。 (https://codex.wordpress.org/Class_Reference/WP_Query) 谢谢你的帮助。
答案 0 :(得分:0)
以下是关系' OR'
的示例$args = array(
'post_type' => 'portfolio',
'meta_query' => array(
'relation' => 'OR', /* <-- here */
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'NOT LIKE'
),
array(
'key' => 'price',
'value' => array( 20, 100 ),
'type' => 'numeric',
'compare' => 'BETWEEN'
)
)
);
$query = new WP_Query( $args );
答案 1 :(得分:0)
我还没有找到只使用一个查询的解决方案。 (无法将AND
更改为OR
)。
所以我提出了两个问题:
$query1 = new WP_Query(array('post_type' => 'portfolio'));
$query2 = new WP_Query(array(
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'portfolio',
)
)));
$query = merge_WP_queries($query1, $query2);
function merge_WP_queries(WP_Query $query1, WP_Query $query2){
$wp_query_returned = new WP_Query();
$wp_query_returned->posts = array_merge( $query1->posts, $query2->posts );
//populate post_count count for the loop to work correctly
$wp_query_returned->post_count = $query1->post_count + $query2->post_count;
return $wp_query_returned;
}
它可以正常工作,即使它不是我想要使用的。