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',
                ),
            ),
        )
    )        
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信