Comment commander une requête par plusieurs clés méta et champs/champs personnalisés?
Ceci est mon code:
$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)
)
),
//*** THIS NOT WORK
'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 );
La partie de 'meta_query'
ne fonctionne pas dans le code.
Vous utilisez une méta-requête sans définir de valeur. Votre façon de faire consiste à interroger les publications, et non à les commander.
Pour classer vos publications par différentes métadonnées, vous pouvez attribuer un nom à vos méta-requêtes, puis l’utiliser pour définir le classement. Voici un exemple simple pour vous:
$args = array(
'meta_query' => array(
'relation' => 'AND',
'query_one' => array(
'key' => 'key_one',
'value' => 'value_one', // Optional
),
'query_two' => array(
'key' => 'key_two',
'compare' => 'EXISTS', // Optional
),
),
'orderby' => array(
'query_one' => 'ASC',
'query_two' => 'DESC',
),
) );
Vous pouvez consulter this section de la page de codex pour WP_Query()
afin de vous familiariser avec le tri des publications.