Не работает сортировка вариаций по цене по убыванию

Всем привет.На 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;}Какие есть варианты исправить это?

У вас есть ещё какой-то код, который влияет на сортировку?По хорошему, можете залить свой functions.php где-то на гит или ещё куда-то?

Вот functions.php https://github.com/compplace/wpsort/blob/master/functions.php

Попробуйте закомнтировать или временно удалить строку 583
add_filter( ‘woocommerce_get_catalog_ordering_args’, ‘custom_woocommerce_get_catalog_ordering_args’ );
Возможно, это поможет

Так я её как раз добавил, потому-что не работала сортировка. Убрал – ничего не поменялось

Вообще сложно сказать в чем проблема. Может родительская тема, может на 251 строчке инклуд влияетrequire get_template_directory() . ‘/inc/woo-setup.php’;
Возможно влияет родительская тема.Я бы закоментрировал всё в functions.php и по очереди выводил весь закоментированный код из коментов и проверял какой участок кода влияет на сортировку.Хотя у вукоммерса есть необъяснимые вещи. У меня в одной теме поломался фильтр по цене (см. аттач) и я в итоге так и не смог его починить. Пришлось создавать новую тему и всё по новой настраивать

Попробовал поудалять код выше –  тоже никаких изменений

вы используете родительскую тему?

какую родительскую? не знаете как получить SQL текущий и поменять его?

дайте ссылку на каталог, где ваш фильтр не работает

https://subuman.multiadverts.site/store/?orderby=price

https://subuman.multiadverts.site/store/?orderby=price-desc

Попробуйте заменить проверку на эту: 

if ( 'price-desc' == $orderby_value ) {
    $args['orderby'] = '_price';
    $args['order'] = 'DESC';
    $args['meta_key'] = 'meta_value_num';
}

Проверку, которая начинается на 586 строке

Поменял, всё так же само

а сможете скинуть сюда post meta для какого-то из вариативных товаров?

<?php
$meta = get_post_meta($product->get_ID());
print_r($meta);?>

мне вот как раз print_r($meta); сможете показать?

А также попробуйте заменить поле orderby

$args['orderby'] = '_regular_price';

в каком файле? в functions не работает. в archive тоже. весь код в плагине я смотрю

single.php и зайти на страницу товара

Вставил в single.php и это не там, даже удалил это файл и всё дальше работает. Видимо всё вообще в коде плагина где то делается. Сортировку поменял на _regular_price и так же ничего не изменилось

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

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

попробуйте у самого дешевого товара поставить максимальную цену 99.99, может поможет добиться нужного результата

Так там и самая дорогая цена не участвует. Сортировка всё равно корявая даже по ним

Поставил 99,99 для макс цены самого дешёвого товара и теперь да, вроде правильно сортирует. А по нижней никак нельзя переделать?

думаю, что можно, но для этого надо свой кастомный сортировщик делать.

например такое:
https://www.cloudways.com/blog/woocommerce-product-sort-and-display/

Anonymous
Отправить
Ответ на: