meta_query未按WP_query中的预期使用tax_query

  • 本文关键字:query tax 未按 WP meta wordpress
  • 更新时间 :
  • 英文 :


已解决!

我有一篇自定义的帖子,里面有一些新陈代谢和分类法。我正在尝试通过元值和分类法的组合来过滤自定义帖子,它正在按预期工作。当元值和分类法都被选中时,它会返回正确的结果,只有分类法选择也起作用。但如果我只选择元值并尝试过滤帖子,它将一无所获。我在这里分享输出的视频链接:https://youtu.be/XaCeJ_LcPhc.是否可以在没有自定义查询的情况下解决问题?

$category_array= [];
$metabox_array = [];
foreach($_POST as $key => $value){      
if($key == 'ms_product_categories'){
foreach($value as $cat_slug){
array_push( $category_array, $cat_slug);
}           
}else{          
array_push( $metabox_array, array('key' => $key, 'value' => $value ) );
}
}       
if(count($metabox_array) >= 2){
$relation = "'relation'=>'AND'";
}else{
$relation = '';
}   
$args = array(
'post_type' => 'ms_product',        
'meta_query'  => array(
$relation,
$metabox_array
),
'tax_query' => array(
array(
'taxonomy'  => 'ms_product_categories',
'field' => 'slug',
'terms'    => $category_array               
),
)
);
$ms_products = new WP_Query( $args );

以下是解决方案,也许对某些人会有所帮助。

$category_array= [];
$metabox_array = [];
foreach($_POST as $key => $value){      
if($key == 'ms_product_categories'){
foreach($value as $cat_slug){
array_push( $category_array, $cat_slug);
}           
}else{          
array_push( $metabox_array, array('key' => $key, 'value' => $value ) );
}       
}
if(count($metabox_array) > 1){      
$metabox_array['relation'] = 'AND'; 
}   

if(!empty($category_array)){                
$tax_query = array(
'taxonomy' => 'ms_product_categories',
'field' => 'slug',
'terms' => $category_array,
'include_children' => true,
);      
}else{
$tax_query = '';
}
$args = array(
'post_type' => 'ms_product',        
'meta_query' => $metabox_array,         
'tax_query' => array(
$tax_query
)       
);

我遇到了同样的问题,我有条件地向$args数组添加元和分类法。并且无论我做什么,CCD_;过滤器";条件

我发现这是我愚蠢的错误。就在new WP_Query($args)声明之后,我不知道为什么,但我已经写了wp_reset_query():D。

刚刚移除wp_reset_query()。并在我的循环及其振铃后添加了CCD_ 6。

我花了两个小时才弄明白。。。

干杯!

最新更新