Многофакторная сортировка постов в цикле wp_query?

Добрый день.

Возник вопрос. Существует такая конструкция для вывода постов в пользовательской таксономии:

$args = array(
    'post_type' => 'my-custom-type',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'ratings_users',
            'type' => 'NUMERIC',
        ),
        array(
            'key' => 'ratings_average',
            'type' => 'NUMERIC',
        ),
        array(
            'key' => 'views',
            'type' => 'NUMERIC',
        ),
    ),
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
);

$query = new WP_Query(
    array_merge(
        $args,
        $wp_query->query
    )
)


Задача сделать сортировку по произвольным полям следующим образом:
1) первыми идут посты с наивысшем значением поля "ratings_users";
2) если значения "ratings_users" одинаковые, то первыми идут посты с наивысшим значением поля "ratings_average";
3) если значения обоих полей одинаковые или же нулевые, то сортировка идёт по наивысшему значению поля "views".

В данном примере действует только сортировка по "ratings_users", как первым значением в массиве. Остальные на сортировку не влияют.

Как можно модифицировать функцию или какие есть ещё безплагиновые методы реализации многофакторной сортировки?

Спасибо.
  • Вопрос задан
  • 576 просмотров
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вам GROUP BY нужен. Читайте доку по хуку posts_groupby
https://codex.wordpress.org/Plugin_API/Filter_Refe...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
28 апр. 2024, в 00:54
10000 руб./за проект
28 апр. 2024, в 00:53
70000 руб./за проект
27 апр. 2024, в 21:24
150000 руб./за проект