Multiple câmpuri personalizate pentru 'orderby' în 'WP_Query'
Î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?

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

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

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 );

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/

Î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 );
?>
