Поддержка WooCommerce Не работает сортировка вариаций по цене

  • Всем привет.
    На WP установлен Woocommerce и есть товары, у которых добавлены variations с ценами.
    У каждой вариации есть поле Regular price, по нему в каталоге надо сделать сортировку.
    Сортировка по возрастанию работает, а вот по убыванию вообще никак.
    В базе в таблице wp_options как я понял это хранится, а не в wp_postmeta.
    Там есть поле с таким JSON:
    {"version":"1586002626","f9e544f77b7eac7add281ef28ca5559f":{"price":{"267":"20.00","269":"100.00"},"regular_price":{"267":"20.00","269":"100.00"},"sale_price":{"267":"20.00","269":"100.00"}},"98f9c03adb427b329f828827eb33e0bf":{"price":{"267":"20.00","269":"100.00"},"regular_price":{"267":"20.00","269":"100.00"},"sale_price":{"267":"20.00","269":"100.00"}}}
    В functions.php пытался много чего переделать, вот например сейчас такое есть, но ничего не сортирует по ?orderby=price-desc.

    add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
    function custom_woocommerce_get_catalog_ordering_args( $args ) {
    	$args['orderby'] = '_transient_wc_var_prices';
    	$args['order'] = 'desc';
    
    	return $args;
    }

    Какие есть варианты исправить это?

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Модератор Юрий

    (@yube)

    В базе в таблице wp_options как я понял это хранится, а не в wp_postmeta.

    В wp_options хранятся транзитные кэши.
    Атрибуты (в широком смысле слова) товаров и их вариаций хранятся в wp_postmeta.

    Искал не нашёл где в postmeta это. Как можно сортировку поправить?

    Модератор Юрий

    (@yube)

    Искал не нашёл где в postmeta это.

    where meta_key=’_regular_price’

    Как можно сортировку поправить?

    Сортировку товаров по ценам их вариаций? По-простому, боюсь, никак, потому что получается сортировка по полю, непосредственно не связанному с сортируемыми записями + множественность значений.

    А по сложному? Можно как-то SQL запрос получить? И почему тогда сортировки другие работают?

    Модератор Юрий

    (@yube)

    Можно как-то SQL запрос получить?

    Можно, получайте 🙂

    И почему тогда сортировки другие работают?

    Странный вопрос. Я не знаю, какие у Вас «другие», и тем более, почему они работают. Может, им достаточно информации в свойствах самого товара, а может для них сделали какие-то субзапросы. Ставьте плагин Query Monitor и в нем смотрите, какие sql-запросы в каких случаях используются. Может, по аналогии получится сделать запрос/параметры wp_query и для того, что Вы хотите сделать. А может оно и так уже сделано, но что-то мешает ему правильно работать.

    А где можно изменить запрос? В pre_get_posts не меняется

Просмотр 7 ответов — с 1 по 7 (всего 7)