Как сделать разную сортировку по двум метаполям в WP_Query

Задача: Есть тип записей "Мероприятия". У них есть два метаполя - date_start и date_end. Нужно чтобы на архивной странице с выводом постов первым было ближайшее мероприятие. Затем все, которые идут после него. И когда предстоящие меропрития закончились дальше чтобы шли все прошедшие мероприятия.

Сайт на ВП.

Стандартный способ из документации ВП не работает с методом relation "OR", только с "AND".

Вот пример сайта (сайт тоже на ВП), где все работает как нужно https://chamber.ua/ua/events/?partners

Но там это было сджелано - не ясно.

Вот мой код запроса:

        return new WP_Query([
            'post_type' => 'event',
            'meta_query' => [
                'relation' => 'OR',
                'future_events' => [
                    'key' => 'date_start',
                    'value' => date('Y-m-d H:i:s'),
                    'compare' => '>=',
                    'type'    => 'DATE'
                ],
                'past_events' => [
                    'key' => 'date_end',
                    'value' => date('Y-m-d H:i:s'),
                    'compare' => '<=',
                    'type'    => 'DATE'
                ],
            ],
            'orderby' => [
                'future_events' => 'ASC',
                'past_events' => 'DESC',
            ],
            'posts_per_page' => 15,
            'paged' => $this->paged()
        ]);

Но в итоге все равно работает только одна из сортировок, которая указана первой в массиве orderby


Ответы (0 шт):