0

我试图创建一个函数来处理显示产品的多个分类要求。我警告你这是一个很长的帖子,因为我已经展示了一些没有奏效的解决方案的思路迭代。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],它只给我第一套可能很多的规则。

回答

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

希望这有助于别人谁尝试进行类似的多纳税情况查询