我正在尝试创建一个函数来处理显示产品的多个分类法要求。我警告你这是一个很长的帖子,因为我已经展示了一些没有用的解决方案的想法。
http://cheekymonkeymedia.ca/blog/using-wordpress-query-multiple-taxonomies#sthash.h7ZyhyGn.dpuf
以上链接是我试图模拟我的代码的基本示例。
我正在使用此方向,因为我有自定义分类的自定义帖子。除了我已经采用数组的值并希望根据用户的请求生成它们。
像这样的数组被传递给函数以发出帖子请求。
$requirements = array(
array(
'taxonomy' =>'category',
'term' =>'cheese'
),
array(
'taxonomy' =>'dairy',
'term' =>'yogurt'
),
);
我试图使用它,但是你不能在数组中使用它。这在逻辑上我是如何查看解决方案的。即使我知道这是错误的。
function query_mult_tax($array){
$myquery['tax_query'] = array(
'relation' => 'OR',
foreach($array as $param){
array(
'taxonomy' => $param["taxonomy"],
'terms' => $param["term"],
'field' => 'slug',
);
}
);
query_posts($myquery);}
经过一些修补,我发现我可以在数组之外做foreach,但传递信息的唯一方法是在数组中。但是,当前函数始终使用不需要的数组写入查询以扭曲所需信息。这让我陷入困境,因为我不知道如何逃避父数组中不需要的数组(因为我无法循环它)。
function fruit_query_mult_tax($array){
wp_reset_query();
//create the basic query
$query = array('post_type' => 'fruit',
'tax_query' => array()
);
// create the arrays
foreach($array as $param){
$args[]= array(
'taxonomy' => $param["taxonomy"],
'terms' => $param["term"],
'field' => 'slug',
'operator' => "IN",
);
}
$query['tax_query'] = array(
'relation' => 'OR',
$args
);
$result = new WP_Query($query);
return $result;
}
查询转储的具有挑战性的部分看起来像这样:
[tax_query] => Array
(
[relation] => OR
[0] => Array
(
[0] => Array
(
[taxonomy] => category
[terms] => cheese
[field] => slug
[operator] => IN
)
[1] => Array
(
[taxonomy] => dairy
[terms] => yogurt
[field] => slug
[operator] => IN
)
)
)
而不是这是有效的。
[tax_query] => Array
(
[relation] => AND
[0] => Array
(
[taxonomy] => category
[terms] => cheese
[field] => slug
[operator] => IN
)
[1] => Array
(
[taxonomy] => dariy
[terms] => yogurt
[field] => slug
[operator] => IN
)
)
这是非常接近的,除了包裹它被包裹在一个数组中。如何逃避或格式化?我不能通过foreach这样做,因为我在父数组中。我试过$args[0]
只给了我第一套可能很多的规则。
答案 0 :(得分:0)
经过一段时间的修修补补后,我发现了它。我需要在税收查询建成之后对其进行预测。
function fruit_query_mult_tax($array){
wp_reset_query();
$query = array('post_type' => 'fruit',
'tax_query' => array()
);
$query['tax_query'] = array(
'relation' => 'AND',
);
foreach($array as $param){
$query['tax_query'][]= array(
'taxonomy' => $param["taxonomy"],
'terms' => $param["term"],
'field' => 'slug',
'operator' => "IN",
);
}
$result = new WP_Query($query);
return $result;}
希望这有助于其他尝试类似多情况税务查询的人