Valori multiple orderby în WP_Query

20 sept. 2012, 18:50:22
Vizualizări: 58.5K
Voturi: 22

Încerc să creez o interogare pentru a sorta după mai multe valori orderby. Iată ce am până acum:

    $dept_id=2;
    $query=new WP_Query(array(
            'post_type'=>'wpcontactus',
            'nopaging'=>true,
            'post_status'=>array('publish', 'pending', 'future'),
            'meta_key'=>'wcu_dept',
            'meta_value'=>$dept_id,
            'orderby'=>'title',
            'order'=>'ASC'
    ));

Încerc să interoghez un tip de postare personalizat și, în cadrul acestui tip de postare, să interoghez o valoare meta.

Apoi, aș dori să sortez mai întâi după menu_order ascendent, apoi după o valoare meta personalizată wcu_lastname ascendent. Cu toate acestea, valoarea orderby nu pare să accepte un array.

Cum pot ordona interogarea folosind mai multe valori orderby?

1
Comentarii

Dacă nu mă înșel, pur și simplu adaugă-le separate prin spațiu.

kaiser kaiser
20 sept. 2012 19:05:12
Toate răspunsurile la întrebare 3
0
37

@Musa cum putem seta mai multe criterii de ordonare pentru câmpuri? Mă întrebam același lucru și am găsit următoarea soluție:

În versiunea 4.0, acum poți transmite un array către WP_Query ca valoare pentru orderby.

Sintaxa arată astfel:

$q = new WP_Query( array( 
    'orderby' => array( 
       'title'      => 'DESC', 
       'menu_order' => 'ASC' 
    ) 
));

Consultați acest link pentru mai multe detalii: https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/

21 ian. 2015 10:47:29
1
11
$query=new WP_Query(array(
                'post_type'=>'wpcontactus', // Tipul postării
                'nopaging'=>true, // Fără paginare - afișează toate rezultatele
                'post_status'=>array('publish', 'pending', 'future'), // Statusurile postărilor
                'meta_query'=>array( // Interogare meta
                                array('key'=>'wcu_dept','value'=>$dept_id, 'compare'=>'='), // Filtrează după departament
                            ),
                'meta_key'=>'wcu_firstname', // Cheia meta pentru sortare
                'orderby'=>'menu_order wcu_firstname', // Ordonează după ordinea din meniu și prenume
                'order'=>'ASC' // Ordine crescătoare
        ));

Folosind sugestia lui @kaiser și opțiunea meta_query, am reușit să obțin interogarea pe care o căutam.

20 sept. 2012 19:15:06
Comentarii

cum putem pune mai multe valori de ordonare pentru câmpuri? De exemplu: ASC pentru menu_order, DESC pentru data

Musa Musa
20 mar. 2014 13:44:01
0
    $args = [
        's'              => $cuvant_cheie,
        'post_type'      => ['page'],
        'paged'          => $pagina,
        'posts_per_page' => LIMITA_PAGINA,
        'tax_query' => [
             [
                  'taxonomy'         => TAXONOMIE_PAGINA_RESURSA,
                  'field'            => 'slug',
                  'terms'            => $slug_term
             ],
        ],
        'post_status'    => 'publish',
        'meta_key'       => 'order',
        'meta_type'      => 'NUMERIC',
        'orderby'        => [
             'meta_value_num' => 'ASC',
             'ID' => 'DESC',
        ],
    ];
    $wp_query = new WP_Query( $args );

codul meu este un exemplu.

26 iul. 2019 06:12:24