既存のDiscourseユーザーに接続する新しいWordPressユーザー

Hey @jord8on、Discourse のマッチング機能は、まず外部 ID (現在は WordPress データベースを変更したため、異なるユーザーを指しています) でマッチングを試み、次にメールアドレスでマッチングを試みます。ID を最初に使うのには、いくつかの正当な理由があります。メールは分散型 ID としてはあまり適していません。

そのため、古い WordPress データベースを使用していた際に作成された Discourse のシングルサインオンレコードを削除する必要があります。日時を使用して特定できます。たとえば、Discourse インスタンスで次のような操作を行います。

./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // これが期待通りか確認
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all

新しいデータベースにインポートされた古いユーザーは、既存の Discourse アカウントとメールアドレスでマッチングされます (新しい WordPress ID は SSO レコードと一致しないため)。

また、WordPress からすべての discourse_username データを削除し、ユーザー Webhook を介して自動的に再同期させることをお勧めします。これを実行する必要があります (おそらく WP CLI を使用して)。これにより、discourse_username メタフィールドのエントリがすべて削除されます。

delete_metadata( 'user', 0, 'discourse_username', '', true );

後でこの情報を見る人のために、DiscourseConnect を 1 つの WordPress データベースで使用していて、移行なしで完全に新しい WordPress データベースに移行する場合、このような問題が発生します。このような変更を行う前に、サポートを求めてください。

「いいね!」 2