dsa4d4789789 2016-01-27 16:11
浏览 88
已采纳

WP_Query - 使用多个AND / OR

I have the below PHP code:-

    $args = array(
        'posts_per_page'=> -1,
        'post_type'     => 'jobs',
        'order'             => 'ASC',
        's' => $search_field,
        'meta_query'    => array(
            'relation' => 'OR',
            array(
                'relation' => 'AND',
                array(
                    'key'       => 'job_salary_to',
                    'value'     => array($job_salary_from,$job_salary_to),
                    'type'    => 'numeric',
                    'compare'   => 'BETWEEN',
                ),
            ),
            array(
                'relation' => 'AND',
                array(
                    'key'       => 'job_salary_from',
                    'value'     => array($job_salary_from,$job_salary_to),
                    'type'    => 'numeric',
                    'compare'   => 'BETWEEN',
                ),
            )
        )   
    );

This will check to see if the search is between the minimum and maximum values which all works perfectly okay.

Now I want to add a further query which will check if it matches up with a Job Sector, e.g. I added the following below 'meta_query':-

            'relation' => 'AND',
            array(
                'key'       => 'job_sector',
                'value'     => 'Finance',
                'compare'   => 'LIKE',
            ),

However, it seems it is just ignoring the above and I'm not sure why. Any help would be much appreciated!

So it looks like this now:-

    <?php
    $args = array(
        'posts_per_page'=> -1,
        'post_type'     => 'jobs',
        'order'             => 'ASC',
        's' => $search_field,
        'meta_query'    => array(
            'relation' => 'OR',
            array(
                'relation' => 'AND',
                array(
                    'key'       => 'job_salary_to',
                    'value'     => array($job_salary_from,$job_salary_to),
                    'type'    => 'numeric',
                    'compare'   => 'BETWEEN',
                ),
            ),
            array(
                'relation' => 'AND',
                array(
                    'key'       => 'job_salary_from',
                    'value'     => array($job_salary_from,$job_salary_to),
                    'type'    => 'numeric',
                    'compare'   => 'BETWEEN',
                ),
            ),
        ),  
        'relation' => 'AND',
        array(
            'key'       => 'job_type',
            'value'     => $job_type,
            'compare'   => 'LIKE',
        ),
        array(
            'key'       => 'job_location',
            'value'     => $job_location,
            'compare'   => 'LIKE',
        )
    );

    $fetch_jobs = new WP_Query( $args );?>
  • 写回答

1条回答 默认 最新

  • dongtongjian3127 2016-01-27 17:33
    关注

    The job_type / job_location conditions should be put under 'meta_query' I guess:

    'meta_query' => array(
        'relation' => 'AND',
        array(
            array(
                'key'       => 'job_type',
                'value'     => $job_type,
                'compare'   => 'LIKE',
            ),
            array(
                'key'       => 'job_location',
                'value'     => $job_location,
                'compare'   => 'LIKE',
            ),
        ),
        array(
            'relation' => 'OR',
            array(
                'relation' => 'AND',
                array(
                    'key'       => 'job_salary_to',
                    'value'     => array($job_salary_from,$job_salary_to),
                    'type'    => 'numeric',
                    'compare'   => 'BETWEEN',
                ),
            ),
            array(
                'relation' => 'AND',
                array(
                    'key'       => 'job_salary_from',
                    'value'     => array($job_salary_from,$job_salary_to),
                    'type'    => 'numeric',
                    'compare'   => 'BETWEEN',
                ),
            ),
        )
    )        
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么