PHP Wordpress Tax查询:WP_Query数组中的循环信息

时间:2014-09-02 16:57:58

标签: php wordpress multidimensional-array implode custom-taxonomy

我正在尝试创建一个函数来处理显示产品的多个分类法要求。我警告你这是一个很长的帖子,因为我已经展示了一些没有用的解决方案的想法。

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]只给了我第一套可能很多的规则。

1 个答案:

答案 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;}

希望这有助于其他尝试类似多情况税务查询的人