【发布时间】:2014-09-02 16:57:57
【问题描述】:
我正在尝试创建一个函数来处理显示产品的多种分类要求。我警告你,这是一篇很长的帖子,因为我已经展示了针对无效解决方案的想法的迭代。
http://cheekymonkeymedia.ca/blog/using-wordpress-query-multiple-taxonomies#sthash.h7ZyhyGn.dpuf
上面链接了一个基本示例,我正在尝试围绕它来建模我的代码。
我使用这个方向是因为我有自定义分类的自定义帖子。除了我已经获取了数组的值并希望按照用户的要求生成它们。
这样的数组被传递给函数以请求帖子。
$requirements = array(
array(
'taxonomy' =>'category',
'term' =>'cheese'
),
array(
'taxonomy' =>'dairy',
'term' =>'yogurt'
),
);
我试图使用它,但你不能在数组中进行 foreach。这在逻辑上我如何看待解决方案。尽管我知道这是错的。
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],它只给了我第一组可能有很多的规则。
【问题讨论】:
标签: php wordpress multidimensional-array implode custom-taxonomy