WP_Query - упорядочить результаты по мета-значению


49

Я проверил и не видел ответа, который еще работает. У меня есть WP_Query со следующими аргументами:

$args = array(
    'post_status' => 'publish',
    'post_type' => 'listing',
    'meta_key' => 'client_feedback_score',
    'orderby' => 'client_feedback_score',
    'order' => 'DESC'
        );

$query = new WP_Query($args);

Я хочу упорядочить результаты по настраиваемому полю записи «client_feedback_score», от низшего к высшему. Но, похоже, это не работает ... кто-нибудь может указать мне правильное направление?

РЕДАКТИРОВАТЬ (РЕШЕНО):

Благодаря ответу Майло, вот рабочий код для упорядочения по числовому мета-значению:

$args = array(
            'post_status' => 'publish',
            'post_type' => 'listing',
            'meta_key' => 'client_feedback_score',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
        );

Ответы:


69

orderbyдолжно быть meta_value_num, или meta_valueне имя ключа. Смотрите WP_Query orderby параметры .


Работал угощение, ура приятель.
Адам Мосс

5
Небольшое примечание: если сообщения meta_keyеще не существует, сообщение будет проигнорировано.
adamj

1
@RobBenz Вы, вероятно, должны начать новый вопрос по этой теме. Шаг 1 Присвойте мета-ключу любое значение, которое вы хотите, назовем его my_meta_keyдля каждого поста, чтобы сгенерировать любой порядок, который вы хотите. Шаг 2 Вы задали meta_keyв своем запросе my_meta_key. Это говорит WordPress запрашивать посты с таким ключом. Шаг 3 Установите orderbyв своем запросе значение meta_value_num. Это говорит WordPress не только запрашивать сообщения my_meta_key, но и численно упорядочивать по этому ключу. Этот аргумент запроса - единственное место, которое вы когда-либо увидите или используете meta_value_num.
Майло

1
@adamj это обходной путь? Мне нужно отсортировать все сообщения, независимо от того, существует ли meta_key для сообщения или нет.
разбить

1
@unbreak простое решение - проанализировать все посты и добавить meta_keyих перед выполнением запроса заказа
adamj
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.