Orderby не работает, как ожидалось в пользовательском запросе

У меня есть этот пользовательский запрос:

query_posts( array ( 'orderby' => 'rr_recommends_count', 'meta_key' => 'rr_recommends_count', 'order' => 'DESC', ) ); 

Кто заказывает такие сообщения:

9, 8, 7, 6, 5, 4, 3, 2, 11, 10, 1 и т. Д.

Я вижу, что проблема в том, что поле meta_value имеет тип longtext .

Как я могу исправить сортировку без изменения типа поля meta_value?

Прежде всего никогда не используйте query_posts . Он разбивает основную функцию и все плагины и функции, полагающиеся на основной объект запроса. Для пользовательских запросов используйте WP_Query или get_posts если они не ищут разбивку запроса

Что касается следующей строки

 'orderby' => 'rr_recommends_count', 

Я могу сказать вам, что rr_recommends_count является недопустимым значением параметра orderby . Подозреваю, что это фактически имя ключа, и все значения являются meta_value_num в этом ключе, поэтому вы должны использовать значение meta_value_num для параметра meta_value_num который является допустимым значением

 'orderby' => 'meta_value_num', 

См. Параметры заказа и заказа в WP_Query

попробуйте следующее:

 $args = array( 'orderby' => 'meta_value_num', 'meta_key' => 'rr_recommends_count', 'order' => 'DESC'); $query = new WP_Query( $args );