Фильтрация продуктов через pre_get_posts по минимальной и максимальной цене (используйте VARIATION продукта, установленный через default_attribute для результатов фильтрации) - PullRequest
0 голосов
/ 03 мая 2020

У меня есть список продуктов, и в настоящее время я реализую различные функции фильтра.

Каждому продукту присвоено 12 вариантов, и каждому варианту назначена своя цена.

Каждый В продукте есть «самый дешевый» вариант, определенный по умолчанию (через свойство атрибутов продукта по умолчанию)

Я хочу адаптировать запрос wordpress в действии pre_get_posts для соответствия только продуктам между максимальной и минимальной ценой - однако , глядя на постмету, я вижу, что для каждого варианта продукта есть запись - например,

product_id: 10, _price: 100 (-> default variation)
product_id: 10, _price: 110
product_id: 10, _price: 120
product_id: 11, _price: 110 (-> default variation)
product_id: 11, _price: 120
product_id: 11, _price: 130

... .

если я сделаю что-то вроде этого:

    $currentMetaQuery = $query->get('meta_query');

    $currentMetaQuery[] = [
        'key' => '_price',
        'value' => array($minMax['min'], $minMax['max']),
        'type' => 'numeric',
        'compare' => 'BETWEEN'
    ];

    $query->set('meta_query', $currentMetaQuery);

с минимальным 110 и максимальным 200, я получу продукты с идентификаторами 10 и 11 (поскольку оба продукта содержат варианты, которые соответствует запросу фильтра)

hower: Я хочу, чтобы вариации по умолчанию были основой для фильтрации значение -> приведенный выше запрос должен возвращать только продукт с идентификатором 11.

Таким образом, запрос на самом деле должен выглядеть примерно так: ограничить запрос продуктами, где вариант продукта по умолчанию имеет цену в диапазоне от минимальной до максимальной ...

У кого-нибудь есть идеи, как это сделать?

Спасибо за любой вклад или решения, которые вы могли бы показать мне!

...