@freeeeez

Как сделать сложную сортировку по произвольному полю в WP?

Есть произвольное поле price, сейчас сортировка по нему выглядит так:
'meta_key'   => 'price',
'orderby'    => 'meta_value_num',
'order'      => 'DESC',

При этом в каталоге выводятся офферы начиная от большой цены, к меньшей, 100к 50к 10к 0 0 0.
Мне нужно сделать сортировку 10к 50к 100к 0 0 0
Если заменить на ASC то первые офферы пойдут с 0 ценой.
Как сформировать такой запрос?
Если это невозможно, то есть в принципе второе поле price2, там немного другая цена, но у офферов с price=0 она тоже price2=0 так что может как то сгруппировать два поля через meta_query? Я просто не понимаю как по двум произвольным полям группировать.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
devellopah
@devellopah
предполагаю что-то такое:

достаём два массива с айдишками$q1_ids для 10к 50к 100к и $q2_ids для 0 0 0
затем $ids = array_merge( $q1_ids, $q2_ds)
и финальный запрос, в котором 'post__in' => '$ids', а 'order_by' => 'post__in'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@EvelynWaugh
SELECT *
FROM wp_posts
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
WHERE mt1.meta_key = 'price'
ORDER BY
CASE
WHEN mt1.meta_value = '0' THEN 1
ELSE 0
END,
mt1.meta_value+0 ASC
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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