Привет, @jord8on, механизм сопоставления на стороне Discourse работает следующим образом: сначала он пытается сопоставить внешний ID (в вашем случае он теперь указывает на разных пользователей, так как вы изменили базу данных WordPress), а затем пытается сопоставить по адресу электронной почты. Использование ID в первую очередь имеет несколько веских причин. Электронная почта не является хорошим децентрализованным идентификатором.
Поэтому вам нужно удалить записи единого входа (SSO) в Discourse, созданные при использовании вашей старой базы данных WordPress. Вы можете использовать метку времени для их идентификации, например, выполните следующие действия на вашем экземпляре Discourse:
./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // проверьте, соответствует ли это вашим ожиданиям
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all
Старые пользователи, импортируемые в новую базу данных, будут сопоставлены на основе адреса электронной почты с их существующими учётными записями в Discourse (так как их новый ID WordPress не будет совпадать ни с одной записью SSO).
Также рекомендую удалить все данные поля discourse_username в WordPress и позволить им автоматически синхронизироваться через веб-хук пользователя. Вам нужно будет выполнить следующую команду (возможно, используя WP CLI), которая удалит все записи для мета-поля discourse_username:
delete_metadata( 'user', 0, 'discourse_username', '', true );
Для тех, кто прочтёт это в будущем: если вы используете DiscourseConnect с одной базой данных WordPress, а затем переходите на совершенно новую базу данных WordPress без миграции, у вас возникнет именно такая проблема. Перед внесением подобных изменений рекомендуется обратиться за помощью.