PHP Wordpress税务查询:在WP_query数组中循环信息



我正试图创建一个函数来处理显示产品的多种分类要求。我警告你,这是一篇很长的帖子,因为我已经展示了解决方案的想法的迭代,但没有奏效。

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

经过一段时间的修补,我终于明白了。我需要在税务查询已经建立之后进行foreach。

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

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

最新更新