复杂的元查询不返回想要的结果

时间:2017-05-12 10:29:47

标签: php wordpress

    $tax_query = array(
        array(
            'taxonomy' => 'category',
            'field' => 'id',
            'terms' => $ajs_cat,
        )
    );

    $args = array(
        'post_type' => 'post',
        'orderby' => 'menu_order',
        'posts_per_page' => $per_page,
        'paged' => $paged,
        'tax_query' => $tax_query,
        'meta_query'    => array(
            'relation'      => 'OR',
            array(
                'key'       => 'price_min',
                'value'     => array($min_price, $max_price),
                'type'      => 'NUMERIC',
                'compare'   => 'BETWEEN'
            ),
            array(
                'key'       => 'price_max',
                'value'     => array($min_price, $max_price),
                'type'      => 'NUMERIC',
                'compare'   => 'BETWEEN'
            ),
        )
    );

我正在尝试根据搜索的预算最低值(price_min)和最大值(price_max)返回行为。

因此,如果行为'X'的最低费用为3000(price_min),最高费用为6000(price_max)

搜索A :('X'在结果中)

我搜索的预算最低为3000($ min_price),最高为5500($ max_price)我在结果中返回'X'。

搜索B :('X'不在结果中)

我使用最低3500($ min_price)和最高5500($ max_price)的预算进行搜索,我希望在结果中看到“X”,因为我可以根据预算支付给他。

我需要'X'在两个实例中都返回

有人可以帮我指出正确的方向吗?

2 个答案:

答案 0 :(得分:1)

不应该是

array(
                'key'       => 'price_min',
                'value'     => $min_price,
                'type'      => 'NUMERIC',
                'compare'   => 'BETWEEN'
            ),
            array(
                'key'       => 'price_max',
                'value'     => $max_price,
                'type'      => 'NUMERIC',
                'compare'   => 'BETWEEN'

答案 1 :(得分:0)

$tax_query = array(
    array(
        'taxonomy' => 'category',
        'field' => 'id',
        'terms' => $ajs_cat,
    )
);

$args = array(
    'post_type' => 'post',
    'orderby' => 'menu_order',
    'posts_per_page' => $per_page,
    'paged' => $paged,
    'tax_query' => $tax_query,
    'meta_query'    => array(
        array(
            'key'       => 'price_min',
            'value'     =>  $min_price,
            'compare'   => '>='
        ),
        array(
            'key'       => 'price_max',
            'value'     => $max_price,
            'compare'   => '<='
        ),
    )
);
相关问题