web-dev-qa-db-fra.com

WP_Query order par plusieurs méta clés et champs

Comment commander une requête par plusieurs clés méta et champs/champs personnalisés?

Ceci est mon code:

$args = array
    (
        'post_type' => 'listing',
        'posts_per_page' => -1,
        'tax_query' => array
        (
            array
            (
                'taxonomy' => 'listing_category',
                'field' => 'slug',
                'terms' => urldecode($category)
            ),
            array
            (
                'taxonomy' => 'location',
                'field' => 'slug',
                'terms' => urldecode($location)
            )
        ),

        //*** THIS NOT WORK
        'meta_query'    => array
        (
            array(
                'key'     => 'listing_status',
                'orderby' => 'meta_value',
                'order' => ASC,
            ),
            array(
                'key'     => 'listing_total_rank',
                'orderby' => 'meta_value',
                'order' => DESC,
            ),
            array(
                'key'     => 'listing_free_date',
                'orderby' => 'meta_value',
                'order' => ASC,
            ),
            array(
                'key'     => 'title',
                'orderby' => 'meta_value',
                'order' => ASC,
            ),
        ),
        //***
    );

$listings = new WP_Query( $args );

La partie de 'meta_query' ne fonctionne pas dans le code.

4
Sevi

Vous utilisez une méta-requête sans définir de valeur. Votre façon de faire consiste à interroger les publications, et non à les commander.

Utilisation de méta-requêtes nommées

Pour classer vos publications par différentes métadonnées, vous pouvez attribuer un nom à vos méta-requêtes, puis l’utiliser pour définir le classement. Voici un exemple simple pour vous:

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
        'query_one' => array(
            'key' => 'key_one',
            'value' => 'value_one', // Optional
        ),
        'query_two' => array(
            'key' => 'key_two',
            'compare' => 'EXISTS', // Optional
        ), 
    ),
    'orderby' => array( 
        'query_one' => 'ASC',
        'query_two' => 'DESC',
    ),
) );

Vous pouvez consulter this section de la page de codex pour WP_Query() afin de vous familiariser avec le tri des publications.

7
Jack Johansson