Hallo @jord8on, die Art und Weise, wie das Matching auf der Discourse-Seite funktioniert, ist, dass es zuerst versucht, die externe ID abzugleichen (die in Ihrem Fall jetzt auf verschiedene Benutzer verweist, da Sie Ihre WordPress-Datenbank geändert haben) und dann versucht, anhand der E-Mail-Adresse abzugleichen. Es gibt einige gute Gründe, zuerst die ID zu verwenden. E-Mail ist keine gute dezentrale Kennung.
Sie müssen also die Single-Sign-On-Datensätze in Discourse löschen, die erstellt wurden, als Sie Ihre alte WordPress-Datenbank verwendet haben. Sie können ein Datum und eine Uhrzeit verwenden, um sie zu identifizieren. Sie würden zum Beispiel Folgendes auf Ihrer Discourse-Instanz tun:
./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // Prüfen Sie, ob dies Ihren Erwartungen entspricht
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all
Die alten Benutzer, die in die neue DB importiert werden, werden anhand der E-Mail-Adresse mit ihren vorhandenen Discourse-Konten abgeglichen (da ihre neue WordPress-ID mit keinen SSO-Datensätzen übereinstimmt).
Ich würde auch alle discourse_username-Daten in WordPress entfernen und sie automatisch über den Benutzer-Webhook neu synchronisieren lassen. Sie müssen dies ausführen (vielleicht mit WP CLI), was alle Einträge für das discourse_username-Metafeld löscht.
delete_metadata( 'user', 0, 'discourse_username', '', true );
Für zukünftige Leser: Wenn Sie DiscourseConnect mit einer WordPress-Datenbank verwenden und dann zu einer völlig neuen WordPress-Datenbank ohne Migration wechseln, werden Sie dieses Problem haben. Sie sollten Hilfe suchen, bevor Sie eine solche Änderung vornehmen.