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'
        );
Adam Moss
la source

Réponses:

69

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

Milo
la source
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