Чем не устраивает вариант сделать сортировку и фильтрацию в стиле аналогичную в rest api?
вида - /items?filter[param1]=gte:10&filter[param2]=eq:somevalue&sort=param1,-param2&limit=10&offset=5
где filter параметры выборки
filter[param1]=gte:10
param1 - название параметра
gte(greater than or equal) - больше или равно
10 - значение
sort=param1,-param2
сортировка ответа по параметрам
по param1 по возрастанию, потом param2 по убыванию
offset - число результатов которые нужно пропустить
limit - количество результатов на выдачу (не более чем)
При необходимости получать информацию пачками - добавить пагинанацию
?page=2&per-page=10
соответственно, номер страницы в результатах при разбивке по 10 значений на страницу
Сочетание сортировки и фильтрации позволит в любом нужном порядке доставать контент(при необходимости расширяя фильтры) и не особо костылить. Конечно кажется избыточным, но делается один раз и переиспользуется потом в других местах. Ну или взять себе понравившиеся части.
Ну, а если нужна принудительная ручная сортировка нужен параметр приоритета/веса(weight) с соответствующей соортировкой по умолчанию. Больше приоритет - ближе к началу списку. sort=weight