web-dev-qa-db-fra.com

Comment combiner des requêtes meta_query?

J'essaie de créer des requêtes combinées meta_query mais elles ne fonctionnent pas. Des idées comment je peux implémenter des requêtes comme l'exemple ci-dessous?

Merci Hinnerk

Array
(
    [relation] => AND
    [0] => Array
        (
            [key] => price
            [value] => 1000
            [type] => numeric
            [compare] => <=
        )

    [1] => Array
        (
            [relation] => OR
            [0] => Array
                (
                    [key] => roomcount
                    [value] => 3
                    [type] => numeric
                    [compare] => >=
                )

            [1] => Array
                (
                    [key] => bathroomcount
                    [value] => 2
                    [type] => numeric
                    [compare] => >=
                )

        )

)
1
Hinnerk Altenburg

En utilisant votre tableau construit, je pense que c'est la syntaxe correcte:

$meta_query_args = array(
    'meta_key' => 'price',
    'meta_value_num' => 1000,
    'meta_compare' => '<=',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'roomcount',
            'value' => 3,
            'type' => 'numeric',
            'compare' => '>='
        ),
        array(
            'key' => 'bathroomcount',
            'value' => 2,
            'type' => 'numeric',
            'compare' => '>='
        )
    )
);

$realestate_meta_query = new WP_Query( $meta_query_args );

Vous pouvez également essayer d'imbriquer meta_query un niveau supplémentaire (bien que je ne sache pas si cela fonctionnera):

$meta_query_args = array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'price',
            'value' => 1000,
            'type' => 'numeric',
            'compare' => '<='
        ),
        array(
            'relation' => 'OR',
            array(
                'key' => 'roomcount',
                'value' => 3,
                'type' => 'numeric',
                'compare' => '>='
            ),
            array(
                'key' => 'bathroomcount',
                'value' => 2,
                'type' => 'numeric',
                'compare' => '>='
            )
        )
    )
);

$realestate_meta_query = new WP_Query( $meta_query_args );
3
Chip Bennett