WP_Query - Classer les résultats par méta-valeur


49

J'ai vérifié et n'ai pas vu de réponse qui fonctionne pour le moment. J'ai un WP_Query avec les arguments suivants:

$args = array(
    'post_status' => 'publish',
    'post_type' => 'listing',
    'meta_key' => 'client_feedback_score',
    'orderby' => 'client_feedback_score',
    'order' => 'DESC'
        );

$query = new WP_Query($args);

Je souhaite classer les résultats en fonction du champ de publication personnalisé 'client_feedback_score', du plus bas au plus élevé. Mais cela ne semble pas fonctionner ... quelqu'un peut-il me diriger dans la bonne direction?

EDIT (RESOLU):

Grâce à la réponse de Milo, voici le code de travail permettant de commander par une méta valeur numérique:

$args = array(
            'post_status' => 'publish',
            'post_type' => 'listing',
            'meta_key' => 'client_feedback_score',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
        );

Réponses:


69

orderbydevrait être meta_value_num, ou meta_valuepas le nom de la clé. Voir Paramètres WP_Query orderby .


Travaillé un régal, acclamations mate.
Adam Moss

5
Petite note, si le meta_keyn'existe pas encore pour le post, le post sera ignoré.
Adamj

1
@RobBenz Vous devriez probablement commencer une nouvelle question sur ce sujet. Étape 1 Attribuez la valeur que vous voulez à votre clé méta, appelons-la my_meta_key, pour que chaque article génère l'ordre que vous voulez. Étape 2 Vous définissez meta_keydans votre requête à my_meta_key. Cela indique à WordPress de rechercher les publications qui ont cette clé. Étape 3 Définissez orderbydans votre requête sur meta_value_num. Cela indique à WordPress non seulement d’interroger les publications my_meta_key, mais également de les classer numériquement en fonction de cette clé. Cet argument de requête est le seul endroit que vous verrez ou utiliserez meta_value_num.
Milo

1
@adamj est-il une solution de contournement? J'ai besoin de trier tous les messages, que méta_key existe ou non pour le message.
Unbreak

1
@unbreak la solution simple consiste à analyser toutes les publications et à les ajouter meta_keyavant d'exécuter la requête de commande
adamj
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.