Задать вопрос

Многофакторная сортировка постов в цикле 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", как первым значением в массиве. Остальные на сортировку не влияют.

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

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

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

Похожие вопросы