07
Июн
2017

Meta_query WordPress. Сортировка по двум произвольным полям, одно из которых может быть не задано. Как сделать?

Как реализовать проверку в параметрах meta_query?

У товара есть два произвольных поля:

1 - "Цена" -> 'meta_key' => 'price'

2 - "Цена по акции" -> 'meta_key' => 'special_price'

У каких-то товаров заполнена только "цена", у каких-то и "цена" и "цена по акции". Соответственно не получается корректно отсортировать (выбрать из базы) товары, т.к. одно поле может быть не заполненным.

Как реализовать проверку "задано ли поле" в параметрах meta_query следующего типа:

По умолчанию сортировать по 'meta_key' => 'special_price', но если у товара special_price не задана, то для них (и только для них) сортировать по 'meta_key' => 'price'.

Пробую так, но не работает:

  $args = array(
   'post_type' => 'custom_products', ,
   'relation' => 'OR',
   'meta_query' => array(
     array(
       'key' => 'price'
     ),
     array(
       'key' => 'special_price'
     ),
  ),
   'orderby' => 'meta_value_num',
   'type' => 'NUMERIC',
   'order' => 'DESC',
);

Источник: https://ru.stackoverflow.com/questions/676487/meta-query-wordpress-%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BF%D0%BE-%D0%B4%D0%B2%D1%83%D0%BC-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC-%D0%BF%D0%BE%D0%BB%D1%8F%D0%BC-%D0%BE%D0%B4%D0%BD%D0%BE-%D0%B8%D0%B7-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85-%D0%BC%D0%BE%D0%B6

Share

Тебе может это понравится...