2014-09-10 147 views
0

我仍然在学习wordpress,并试图用WP_Query,meta_query来查询帖子,确切地说,这件事是在尝试了不同的可能方式并发现我无法嵌套数组与关系我没有知道下一个可能的方法是直接创建一个SQL查询。WP_Query的复杂查询

为了更好地解释我想要做什么,下一个数组希望能帮助:

'meta_query' => array(
    'relation' => 'AND', 
    array(
     'key'  => 'Meta_geo', 
     'value' => '46', 
     'compare' => '=', 
    ), 
    array(
     'key'  => 'Meta_dest', 
     'value' => 'si', 
     'compare' => '=', 
    ), 
    array(
     'relation' => 'OR', 

     array(
      array(
      'key'  => 'Meta_1', 
      'value' => '10', 
      'compare' => '<=', 
      ), 
      array(
      'key'  => 'Meta_1', 
      'value' => '30', 
      'compare' => '>=', 
      ) 
     ), 

     array(
      'relation' => 'OR', 
      array(
      'key'  => 'Meta_1', 
      'value' => '', 
      'compare' => '=', 
      ), 
      array(
      'key'  => 'Meta_1', 
      'value' => '', 
      'compare' => '=', 
      ) 
     ) 
    ) 
), 

许多感谢的时候,如果有一个expertet谁可以给我一个提示,我将不胜感激。

对不起,我的英语。

+0

你能解释你的查询吗? – 2014-09-10 13:24:56

+0

你可以在SQL中做你的查询吗? – 2014-09-10 14:47:57

回答

0

根据您上面下面的什么是你会得到最接近...

'meta_query' => array(
    'relation' => 'OR', 
    array(
     'key'  => 'Meta_geo', 
     'value' => '46', 
     'compare' => '=', 
    ), 
    array(
     'key'  => 'Meta_dest', 
     'value' => 'si', 
     'compare' => '=', 
    ), 

    array(
     'key'  => 'Meta_1', 
     'value' => array('10','11','12' etc), 
     'compare' => 'IN', 
    ), 

) 

这会留下一个小整理不过的事情。这可以通过循环完成,并且通常使用可以使用该循环的循环显示查询结果。

例如

while ($my_query->have_posts()) : $my_query->the_post(); 
    $metavalue = get_post_meta($post->ID, 'meta_geo', true); 
    $metavalue = get_post_meta($post->ID, 'meta_dist', true);// if there are a lot of conds, use get_post_meta($post->ID) to return object of value arrays 

    if($metavalue == 46 &&): //proceed 
     //html here! 
    endif; 
endwhile;