首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WP_Query进行复杂查询

使用WP_Query进行复杂查询
EN

Stack Overflow用户
提问于 2014-09-10 21:13:50
回答 1查看 63关注 0票数 0

我仍然在学习wordpress,并试图用sql查询帖子,准确地说,事情是在尝试了不同的可能方法后,发现我不能嵌套带有关系的数组,我不知道下一个可能的方法是不是直接进行WP_Query查询。

为了更好地解释我想要做的事情,希望下一个数组能有所帮助:

代码语言:javascript
复制
'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' => '=',
           )
         )
    )
),

非常感谢您抽出时间,如果有专家能给我一点提示,我将不胜感激。

对不起,我的英语不好。

EN

回答 1

Stack Overflow用户

发布于 2014-09-10 22:02:15

基于你所拥有的,下面是你能得到的最接近的结果...

代码语言:javascript
复制
'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',
    ),

 )

然而,这会给你留下一些需要整理的东西。这可以通过循环来完成,正如您通常使用循环显示查询结果一样,您可以使用该循环。

例如:

代码语言:javascript
复制
 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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25766419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档