Wordpress $ wpdb-> usermeta trier par meta_value
Question
Je suis en train d'afficher tous les utilisateurs en fonction d'un meta_key appelé « points » comme ceci:
$wpdb->get_col($wpdb->prepare("
SELECT user_id, meta_key = 'points', meta_value
FROM $wpdb->usermeta
ORDER BY meta_value DESC
LIMIT $limit OFFSET {$paginate->offset()}"));
Les utilisateurs sont affichés correctement, mais l'ordre ne fonctionne pas, meta_value est égal à un nombre de 1 à ∞. Alors, comment dois-je l'obtenir au travail? Merci.
PS: Ceci est la sortie:
Array ( [0] => 1 [1] => 2 [2] => 4 )
Je crois donc est commandé par ID.
La solution
SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT
CAST (meta_value AS SIGNE) convertiront de LONGTEXT à INT. Il fonctionne maintenant.
Autres conseils
Si je ne suis pas tout à fait tort à propos de MySQL, vous devez ajouter les meta_key = 'points' à la clause where. Réécrivez la requête à:
SELECT user_id, meta_value
À partir de $ wpdb-> usermeta
OÙ meta_key = "points de la
ORDER BY meta_value DESC
LIMITE limite de $ OFFSET {$ paginate-> offset ()}