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 .


Працював частування, підбадьорював товариш.
Адам Мосс

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 чи є це вирішення? Мені потрібно сортувати всі повідомлення, незалежно від того, чи існують мета-ключі для публікації чи ні.
unbreak

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