Múltiples campos personalizados para 'orderby' en 'WP_Query'
Estoy intentando ordenar publicaciones del blog primero por 'ciudad' y luego por 'nombre_calle' dentro de cada ciudad. No logro que el 'nombre_calle' se muestre en orden alfabético. Estoy usando 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'
),
)
)
);
?>
¿Alguna idea?

meta_query
y orderby
son parámetros separados, simplemente los colocas juntos en un array. Tendrás que hacer uno primero y luego el otro.
Por ejemplo:
<?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

¡Gracias @Nath! Lo intenté pero todavía no logro que el nombre de la calle se ordene alfabéticamente...

Me tomó un tiempo descubrir cómo ordenar por valores numéricos con múltiples meta keys, ya que no puedes simplemente usar orderby meta_value_num. En su lugar, debes establecer el tipo como numérico en la meta query. Este es un código funcional en producción.
$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 );

Necesitas ordenar por cláusulas específicas para meta_query.
Este enlace debería cubrir todo lo necesario para ayudarte a resolver la sintaxis y hacerlo funcionar.
https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/

Prueba esto, podría ayudarte.
<?php
$args = array(
'post_type' => 'Sports',
'meta_query' => array(
array(
'key' => 'league_count',
'orderby' => 'meta_value_num', /* usa esto solo
si la clave almacena números, de lo contrario usa 'meta_value' */
'order' => 'ASC'
),
array(
'key' => 'matches_count',
'orderby' => 'meta_value_num',
'order' => 'ASC'
),
),
);
$query = new WP_Query( $args );
?>
