Wordpress сортировка по количеству настраиваемых полей дает разные результаты

У меня есть запрос, который дает мне сообщения настраиваемого типа, отсортированные по категориям, и настраиваемые поля, в которых есть число, указывающее количество голосов за сообщение. Проблема в том, что если 2 сообщения имеют 3 голоса, иногда при обновлении меняется их позиция. Вот код:

$args = array(
    'numberposts'   => 10,
    'post_type'     => 'nominees',
    'meta_query' => array(
             array(
               'key' => 'category',
               'value' => get_the_ID(),
               'compare' => '=',
             )
      ),
      'orderby' => 'meta_value_num',
      'order' => 'DESC',
      'meta_key' => 'count_nominees'
);

Я попытался добавить заказывать в мета-запрос категории, но ничего не изменилось, я все еще иногда получаю разные результаты при обновлении, если у сообщений одинаковое количество голосов. Как правильно добавить второй заказ, по идентификатору или как-то еще?

Спасибо.

Вы это проверили ?: wordpress.stackexchange.com/a/65772/4984

Klian 02.05.2018 08:58

вы также можете проверить это: stackoverflow.com/questions/10016568/…

Chintan 02.05.2018 08:59

@Klian ну у меня то же самое, проблема в том, что у меня числовое поле

CritingZ 02.05.2018 09:06

@Chintan да, но это отличается от моего случая

CritingZ 02.05.2018 09:06

попробуйте отсортировать результат вместе с идентификатором или чем-то еще, что лучше всего подходит, чтобы устранить колебания результатов при одинаковом подсчете голосов. stackoverflow.com/questions/10016568/…

Aman Agarwal 02.05.2018 09:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в комментариях, я думаю, что это может помочь, но вы могли бы расширить его, чтобы он был немного более конкретным в поисковом запросе для вашего варианта использования.

$args = array(
    'numberposts'   => 10,
    'post_type'     => 'nominees',
    'meta_query' => array(
        array(
            'key' => 'category',
            'value' => get_the_ID(),
            'compare' => '='
        )
    ),
    'meta_key' => 'count_nominees',
    'orderby' => array(
        'count_nominees' => 'DESC',
        'ID' => 'DESC'
    )
);

Это должно получиться10 размещает сообщения в типе сообщений nominees, только если они являются частью категории xyz, имеют мета сообщений count_nominees и упорядочены по count_nominees сначала в порядке descending, а затем по post ID в порядке descending.

Вы можете использовать документацию WP_Query в кодексе WordPress для получения дополнительной информации о сложных запросах с использованием метаданных записей.

Это сработало, но я удивлен, что он работает без meta_value_num, потому что в прошлый раз, когда я проверял, при сортировке по настраиваемому полю требуется использовать NUM, чтобы получить правильную сортировку, хм, поэтому я немного запутался

CritingZ 02.05.2018 09:23

Я думаю, это потому, что он ищет meta_value_num как имя столбца, которого не существует (по крайней мере, по умолчанию), поэтому он просто пропускает предложение порядка. Рад, что все работает!

user7236046 02.05.2018 09:26

Другие вопросы по теме