DiscourseConnect を使用しない場合の discourse_username 入力

hm ok、つまり実質的に

  1. WordPressとDiscourseでメールアドレスが異なるユーザーのサブセットが存在することになります。
  2. ユーザー名は、IDプロバイダーによってWordPressとDiscourseの両方に提供されるため、同じであることが保証されます。

WP DiscourseユーザーWebhookをDiscourseConnect機能から切り離した場合(可能)、ユーザーマッチングはユーザー名ではなくメールアドレスに基づいて行われます。あなたの状況は、ID設定にやや特有なものです。

WordPress側でカスタムコードを使用して処理する方が良いケースだと思います。やりたいことは次のようになります。

function update_discourse_username( $user_login, $user ) {
    update_user_meta( $user->ID, 'discourse_username', $user_login );
}
add_action( 'wp_login', 'update_discourse_username', 10, 2);

基本的に、ログイン後にWordPressのユーザー名として「discourse_username」メタフィールドを割り当てます。これは、両者が同じであることが保証されているためです。WordPressのコードでは、「user_login」が「username」と呼ばれることがあることに注意してください。