@Alapaska
Coder

Как сделать правильную сортировку по META полю в Woocommerce/Wordpress?

Итак, вот такой вот код в Functions.php:
add_filter('woocommerce_get_catalog_ordering_args', 'wcs_get_catalog_ordering_args');
    function wcs_get_catalog_ordering_args($args)
    {
        $orderby_value = isset($_GET['orderby']) ? woocommerce_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby'));
        if ('defaultt' === $orderby_value) {
            $args['orderby'] = 'meta_value';
            $args['meta_key'] = '_pointss';
            $args['order'] = 'DESC';
        }
        return $args;
    }

Должен сортировать товары по мета полю _pointss таким образом, чтобы выходили в топ архива (стр. категории) с самым большим значением (на данный момент, самое высокое значение - 4254). Однако в топ попадают в первую очередь товары с значением поля "99", "991", "98", так далее.

Полагаю, надо сделать конвертирование значения из string в integer, наверное тогда будет работать корректно. Но как это сделать? Или я не прав?
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Полагаю, надо сделать конвертирование значения из string в integer, наверное тогда будет работать корректно. Но как это сделать?

Попробуйте заменить $args['orderby'] = 'meta_value'; на $args['orderby'] = 'meta_value_num';.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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