【问题标题】:PHP Wordpress Tax query: Looping information within an WP_Query arrayPHP Wordpress 税务查询:在 WP_Query 数组中循环信息
【发布时间】: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


    【解决方案1】:

    经过一段时间的修补,我想通了。我需要在税收查询已经构建后对其进行 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;}
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多