@caof19

Как получить диапозон цен категории?

Собственно вопрос, есть сайт на wc, есть товары в категории. Как получить минимальную цену и максимальную цену товара в этой категории? Сейчас это сделано неправильными костылями. Делается запрос в бд, сортируется по цене и выводит одну запись. Это вариант не устраивает, так как делается 3 запроса ( обычный вывод товаров, запрос на максимальную цены и на минимальную цену ). Какие есть еще варианты решения этой задачи?
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
Почему Вы считаете, что это костыли? Закэшируйте результат и сбрасывайте кэш по хукам сохранения товара и прикрепления к термину. Тогда будет один запрос, а если в options или transients так и вообще 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
function product_category_max_min_price($term){
    
    global $wpdb;
    $results = $wpdb->get_col( "
        SELECT pm.meta_value
        FROM {$wpdb->prefix}term_relationships as tr
        INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
        INNER JOIN {$wpdb->prefix}terms as t ON tr.term_taxonomy_id = t.term_id
        INNER JOIN {$wpdb->prefix}postmeta as pm ON tr.object_id = pm.post_id
        WHERE tt.taxonomy LIKE 'product_cat'
        AND t.term_id = {$term->term_id}
        AND pm.meta_key = '_price'
    ");


    sort($results, SORT_NUMERIC);

    return [
     'min' => current($results),
    'max' = end($results)
   ];


}
Ответ написан
Ваш ответ на вопрос

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

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