Вы можете сделать это с помощью пользовательской строки запроса , которая преобразует метаданные строки:
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'price'
AND wposts.post_type = 'post'
ORDER BY ABS(wpostmeta.meta_value) DESC
";
Если ваше мета-значение содержит знак доллара ($ 123,45), вы можете настроитьЗАКАЗАТЬ, чтобы удалить его:
ORDER BY ABS(SUBSTRING(wpostmeta.meta_value, 2)) DESC