Запрос WP - С использованием нескольких И/ИЛИ


У меня есть следующий 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',
                ),
            )
        )   
    );

Это позволит проверить, находится ли поиск между минимальным и максимальным значениями, которые все работают нормально.

Теперь я хочу добавить еще один запрос, который проверит, соответствует ли он сектору вакансий, например, я добавил следующее ниже "meta_query":-

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

Однако, похоже, что это просто игнорирует вышесказанное, и я не уверен, почему. Любая помощь будет очень признательна!

Итак, теперь это выглядит так: -

    <?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 );?>
Author: nsilva, 2016-01-27

1 answers

Условия job_type/job_location должны быть указаны в разделе "мета_запрос", я думаю:

'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',
            ),
        ),
    )
)        
 2
Author: slbteam08, 2016-01-27 17:33:45