Multiple câmpuri personalizate pentru 'orderby' în 'WP_Query'

20 dec. 2016, 23:09:29
Vizualizări: 16.9K
Voturi: 6

Încerc să ordonez postările blogului mai întâi după 'city' și apoi după 'street_name' în cadrul fiecărui oraș. Nu reușesc să afișez 'street_name' în ordine alfabetică. Folosesc WP_Query:

                <?php
                $args = array(
                    'post_type'=> 'property',
                    'meta_query' => array(
                                array(
                                    'relation' => 'AND' ,
                                    array(
                                        'meta_key' => 'city',
                                        'orderby' => 'meta_value',
                                        'order' => 'ASC'
                                    ),
                                    array(
                                        'meta_key' => 'street_name',
                                        'orderby' => 'meta_value',
                                        'order' => 'ASC'
                                    ),
                                )

), Idei?

0
Toate răspunsurile la întrebare 4
2

meta_query și orderby sunt parametri separați, pur și simplu îi puneți împreună într-un array. Va trebui să faceți unul și apoi celălalt.

exemplu:

<?php
$args = array(
    'post_type'     => 'property',
    'meta_query'    => array(
        array(
            'relation' => 'AND',
            'city_clause' => array(
                'key'       => 'city',
                'compare'   => 'EXISTS',
            ),
            'street_clause' => array(
                'key'       => 'street_name',
                'compare'   => 'EXISTS',
            ),
        )
    )
    'orderby' => array(
        'city_clause'       => 'desc',
        'street_clause'     => 'desc',
    )
)
?>

https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters

21 dec. 2016 01:46:23
Comentarii

Mulțumesc @Nath ! Am încercat asta și tot nu reușesc să ordonez numele străzii în ordine alfabetică...

bhood bhood
21 dec. 2016 15:43:30

@bhood Bine, am actualizat răspunsul meu pentru a folosi indecși expliciti ai array-ului care sunt referențiați de parametrul orderby. Verifică dacă funcționează.

ngearing ngearing
22 dec. 2016 01:05:12
1

Mi-a luat ceva timp să înțeleg cum să ordonez după valori numerice cu mai multe meta chei, deoarece nu poți folosi pur și simplu orderby meta_value_num. În schimb, setezi tipul la numeric în interogarea meta. Acesta este cod funcțional în producție.

    $meta_query = array(
        'relation' => 'AND',
        'query_one' => array(
            'key' => '_rama_ads_type'
        ),
        'query_two' => array(
            'key' => '_rama_ads_order',
            'type' => 'NUMERIC',
        ),
    );

    $order_by = array(
        'query_one' => 'ASC',
        'query_two' => 'DESC',
    );

    $query->set( 'meta_query', $meta_query );
    $query->set( 'orderby', $order_by );
4 apr. 2020 05:38:39
Comentarii

Mulțumesc mult. Am tot încercat cu meta_type și de fapt aveam nevoie doar de type

Jacob Raccuia Jacob Raccuia
21 mai 2024 23:42:05
0

Trebuie să ordonați după clauze specifice pentru meta_query.

Acest link ar trebui să acopere tot ce aveți nevoie pentru a înțelege sintaxa și a o face să funcționeze.

https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/

21 dec. 2016 18:56:38
2
-3

Încearcă asta, ar putea ajuta.

<?php
$args = array(
'post_type'  => 'Sports',
'meta_query' => array(
    array(
        'key'     => 'league_count',
                    'orderby' => 'meta_value_num', /* folosește asta doar 
                             dacă cheia stochează numere, altfel folosește 'meta_value' */
                    'order' => 'ASC'
    ),
    array(
        'key'     => 'matches_count',
                    'orderby' => 'meta_value_num',
                    'order' => 'ASC'
    ),
),
);
$query = new WP_Query( $args );
?>
1 iun. 2018 15:09:57
Comentarii

meta_query nu acceptă argumente orderby în acest mod.

Jacob Peattie Jacob Peattie
1 iun. 2018 17:05:20

Te rugăm să [editezi] răspunsul tău și să adaugi o explicație: de ce această soluție ar putea rezolva problema?

fuxia fuxia
1 iun. 2018 19:00:19