Ordinare WP_Query per più meta key e campi personalizzati

28 ago 2017, 16:38:17
Visualizzazioni: 18.7K
Voti: 8

Come ordinare una query per più meta key e campi/campi personalizzati?

Questo è il mio codice:

$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)
            )
        ),

        //*** QUESTO NON FUNZIONA
        '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 parte di 'meta_query' non funziona nel codice.

1
Commenti

Vorrei far notare che questa query sarà piuttosto lenta/costosa

Tom J Nowell Tom J Nowell
28 ago 2017 17:56:45
Tutte le risposte alla domanda 1
0
19

Stai utilizzando una meta query senza impostare un valore. Il modo in cui lo stai facendo serve per interrogare i post, non per ordinarli.

Utilizzo di Meta Query Denominate

Per ordinare i tuoi post in base a diversi metadati, puoi assegnare un nome alle tue meta query e poi utilizzarlo per impostare l'ordinamento. Ecco un semplice esempio:

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

Puoi consultare questa sezione della pagina del codex per WP_Query() per familiarizzare con l'ordinamento dei post.

28 ago 2017 17:04:13