У меня есть запрос, который дает мне сообщения настраиваемого типа, отсортированные по категориям, и настраиваемые поля, в которых есть число, указывающее количество голосов за сообщение. Проблема в том, что если 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'
);
Я попытался добавить заказывать в мета-запрос категории, но ничего не изменилось, я все еще иногда получаю разные результаты при обновлении, если у сообщений одинаковое количество голосов. Как правильно добавить второй заказ, по идентификатору или как-то еще?
Спасибо.
вы также можете проверить это: stackoverflow.com/questions/10016568/…
@Klian ну у меня то же самое, проблема в том, что у меня числовое поле
@Chintan да, но это отличается от моего случая
попробуйте отсортировать результат вместе с идентификатором или чем-то еще, что лучше всего подходит, чтобы устранить колебания результатов при одинаковом подсчете голосов. stackoverflow.com/questions/10016568/…
Как упоминалось в комментариях, я думаю, что это может помочь, но вы могли бы расширить его, чтобы он был немного более конкретным в поисковом запросе для вашего варианта использования.
$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, чтобы получить правильную сортировку, хм, поэтому я немного запутался
Я думаю, это потому, что он ищет meta_value_num
как имя столбца, которого не существует (по крайней мере, по умолчанию), поэтому он просто пропускает предложение порядка. Рад, что все работает!
Вы это проверили ?: wordpress.stackexchange.com/a/65772/4984