WP_Query ordonare după mai multe chei meta și câmpuri

28 aug. 2017, 16:38:17
Vizualizări: 18.7K
Voturi: 8

Cum pot ordona interogarea după mai multe chei meta și câmpuri/câmpuri personalizate?

Acesta este codul meu:

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

        //*** ACESTA PARTE NU FUNCȚIONEAZĂ
        '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 );

Partea cu 'meta_query' nu funcționează în cod.

1
Comentarii

Aș menționa că această interogare va fi destul de lentă/costisitoare

Tom J Nowell Tom J Nowell
28 aug. 2017 17:56:45
Toate răspunsurile la întrebare 1
0
19

Utilizați meta query fără a seta o valoare. Modul în care faceți acest lucru este folosit pentru a interoga postări, nu pentru a le ordona.

Utilizarea Meta Queries Denumite

Pentru a ordona postările după diferite metadate, puteți da nume meta queriilor și apoi le puteți folosi pentru a seta ordonarea. Iată un exemplu simplu pentru dvs.:

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

Puteți consulta secțiunea aceasta din pagina codex pentru WP_Query() pentru a vă familiariza cu sortarea postărilor.

28 aug. 2017 17:04:13