Как отсортировать сообщения темы по дате?

Я импортировал большой старый список рассылки в Discourse и обнаружил (после объединения различных тем, которые изначально не были правильно идентифицированы как часть родительской темы), что темы оказались перемешаны. Многие сообщения в темах с более ранними датами отображаются в Discourse ПОСЛЕ родительских тем, у которых даты более ранние.

Существует ли способ отсортировать темы по дате от самой старой (первое сообщение) к самой новой?

Нет. Проблема в том, что темы сортируются по идентификатору поста. И, как вы описали, вы импортировали посты в порядке, отличном от того, в котором они должны были быть созданы. Боюсь, что единственное правильное решение — исправить импорт так, чтобы посты импортировались в правильном порядке. Однако, судя по всему, вам достаточно просто очистить базу данных и снова запустить скрипт импорта.

(Или другие «решения»: не обращать внимания на порядок постов, ведь это старые материалы, которые никто не будет читать, либо придумать способ для каждой темы удалить все существующие посты и создать их заново в правильном порядке.)

Хм, они уже действуют довольно давно. Я не считаю удаление и повторный импорт подходящим решением. Интересно, можно ли создать плагин, который позволит переставлять посты по ID… хм.

Ох, как жаль. В принципе, возможно всё, но это навсегда повлияет на производительность всего сайта.

Вы могли бы удалить эти темы и связанные с ними пользовательские поля, а затем снова запустить скрипт. Перед выполнением на рабочих данных обязательно тщательно протестируйте это на тестовом сайте.

Если post-ids будут переставлены, я не думаю, что это навсегда повлияет на ситуацию. Предположительно, ещё один вариант — это плагин, который просто сортирует поток по дате при его запросе…

Верно. Если вы удалите и создадите заново все посты в правильном порядке, всё будет в порядке.