WordPress $ WPDB-> UserMeta Classificação por meta_value
Pergunta
Estou tentando exibir todos os usuários com base em um meta_key chamado "pontos" como este:
$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()}"));
Os usuários são exibidos corretamente, mas o pedido não está funcionando, o meta_value é igual a um número de 1 a ∞. Então, como devo fazê -lo funcionar? Obrigado.
PS: Esta é a saída:
Array ( [0] => 1 [1] => 2 [2] => 4 )
Então, acredito que é ordenado por ID.
Solução
SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT
Elenco (meta_value conforme assinado) Will Covert de LongText para Int. Agora está funcionando.
Outras dicas
Se não estou completamente errado sobre o MySQL, você deve adicionar o meta_key = 'pontos' para a cláusula onde. Reescreva a consulta para:
Selecione User_id, meta_value
De $ WPDB-> UserMeta
Onde meta_key = 'pontos'
Ordem por meta_value desc
LIMIT $ Offset {$ paginate-> offset ()}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow