WordPress-带WP_查询的SQL请求,在post_类型和分类法之间使用或
我的问题很简单,我试图获得公文包帖子(来自插件)和包含“公文包”类别的文章(我自己制作) 看起来post_类型和tax_查询之间的关系是一个关系,我需要一个OR,我如何才能做到这一点 我试着按照官方文件去做,但是我被卡住了。()WordPress-带WP_查询的SQL请求,在post_类型和分类法之间使用或,wordpress,Wordpress,我的问题很简单,我试图获得公文包帖子(来自插件)和包含“公文包”类别的文章(我自己制作) 看起来post_类型和tax_查询之间的关系是一个关系,我需要一个OR,我如何才能做到这一点 我试着按照官方文件去做,但是我被卡住了。() 感谢您的帮助。下面是一个关系为“或”的示例: $args = array( 'post_type' => 'portfolio', 'meta_query' => array( 'relation' => '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 );
$args=array(
“post_type”=>“portfolio”,
“元查询”=>数组(
'关系'=>'或',/*'颜色',
'值'=>'蓝色',
'比较'=>'不相似'
),
排列(
“键”=>“价格”,
'值'=>数组(20100),
'类型'=>'数值',
'比较'=>'之间'
)
)
);
$query=新的WP\u查询($args);
下面是一个关系为“或”的示例:
$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 );
$args=array(
“post_type”=>“portfolio”,
“元查询”=>数组(
'关系'=>'或',/*'颜色',
'值'=>'蓝色',
'比较'=>'不相似'
),
排列(
“键”=>“价格”,
'值'=>数组(20100),
'类型'=>'数值',
'比较'=>'之间'
)
)
);
$query=新的WP\u查询($args);
我没有找到只使用一个查询的解决方案。(无法将和
更改为或
)
因此,我提出了两个问题:
$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;
}
它工作正常,即使它不是我想要使用的。我还没有找到任何只使用一个查询的解决方案。(无法将
和
更改为或
)
因此,我提出了两个问题:
$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;
}
它工作正常,即使它不是我想要使用的。这会在两个元查询之间产生OR,对吗?所以基本上如果颜色不象蓝色或者价格在20到100之间。但它仍然是一个和port_type=“portfolio”。@Vadorequest我认为您必须执行两个不同的WP_查询并合并结果。真的吗?这正是我不应该做的。这是一个非常坏的习惯,我甚至不知道如何合并结果,因为WP_查询返回的是一个对象,而不是数组。我考虑过这一点,但我更喜欢使用一个查询,如果使用正确的SQL字符串,我会这样做。这会在两个元查询之间产生OR,对吗?所以基本上如果颜色不象蓝色或者价格在20到100之间。但它仍然是一个和port_type=“portfolio”。@Vadorequest我认为您必须执行两个不同的WP_查询并合并结果。真的吗?这正是我不应该做的。这是一个非常坏的习惯,我甚至不知道如何合并结果,因为WP_查询返回的是一个对象,而不是数组。我考虑过这一点,但我更喜欢使用一个查询,如果使用正确的SQL字符串,我会这样做。