Wordpress $ wpdb-> UserMeta ordenar por meta_value
Pregunta
Estoy tratando de mostrar todos los usuarios en base a un meta_key llamados "puntos" de esta manera:
$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()}"));
Los usuarios se muestran correctamente, pero el orden no está funcionando, meta_value es igual a un número de 1 a 8. Entonces, ¿cómo debería hacerlo funcionar? Gracias.
PD: Esta es la salida:
Array ( [0] => 1 [1] => 2 [2] => 4 )
Así que creo que está ordenados por ID.
Solución
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 Firmado) será acogida contra LONGTEXT a INT. Funciona ahora.
Otros consejos
Si no estoy completamente equivocado acerca de MySQL, hay que añadir los meta_key = 'puntos' a la cláusula where. Reescribir la consulta a:
SELECT user_id, meta_value
DESDE $ wpdb-> UserMeta
DONDE meta_key =
'puntos' ORDER BY DESC meta_value
LÍMITE $ límite de desplazamiento {$ paginate-> offset ()}