Заполнение discourse_username при отсутствии DiscourseConnect

Хм, хорошо, то есть по сути:

  1. У части ваших пользователей будут разные адреса электронной почты в WordPress и Discourse.
  2. Ваше имя пользователя гарантированно будет одинаковым, так как оно предоставляется вашим провайдером идентификации как для WordPress, так и для Discourse.

Если бы мы разделили веб-хук пользователя WP Discourse от функциональности DiscourseConnect (это возможно), то сопоставление пользователей происходило бы на основе адреса электронной почты, а не имени пользователя. Ваша ситуация несколько специфична для вашей настройки идентификации.

Я думаю, что этот случай лучше обрабатывать с помощью пользовательского кода в 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);

По сути, просто присваивайте поле мета-данных discourse_username имени пользователя WP после входа, так как они гарантированно совпадают. Обратите внимание, что “user_login” — это то, как иногда называют “username” в коде WordPress.