使用WP_Query进行复杂查询

时间:2014-09-10 13:13:50

标签: sql wordpress wp-query

我仍然在学习wordpress并尝试使用WP_Query执行帖子查询,meta_query是准确的,事情是在尝试不同的可能方式之后发现我无法使用关系嵌套数组我不知道是否下一个可能的方法是直接进行SQL查询。

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

'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' => '=',
           )
         )
    )
),

很多感谢您的时间,如果有专家可以给我一个提示,我将不胜感激。

抱歉我的英文。

1 个答案:

答案 0 :(得分: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',
    ),

 )

但是这会让你有点整理。这可以通过循环完成,并且通常使用循环显示查询结果,您可以使用它。

e.g。

 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;