# 새로운 가입 양식으로 WP에서 Discourse에 사용자를 생성할 수 없습니다

**URL:** https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700
**Category:** WordPress
**Created:** [7월 22, 2022, 9:36오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700 "2022-07-22T21:36:27Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 22, 2022, 9:36오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/1 "2022-07-22T21:36:27Z")

</div>

[Discourse Connect](https://meta.discourse.org/t/13045?silent=true)를 설정하여 WP를 주요 등록 및 로그인 인스턴스로 사용하고 있습니다.

서로 다른 플로우를 가진 두 가지 사용자 등록 양식을 가지고 있습니다.

1. [표준 등록](https://www.showprowess.com/professional-registration/) (홈페이지에서, 기존 양식이며 여전히 Discourse에 사용자를 생성합니다)
2. [사용자 등록](https://www.showprowess.com/build-your-skills-map/) (도구 플로우를 사용하여, 이 양식은 WP 사용자를 생성하지만 Discourse에는 사용자를 생성하지 않습니다).

Discourse 플러그인에서 특정 등록 양식과 관련된 설정을 찾지 못했습니다. 두 번째 양식의 사용자를 WP에서 확인해 보면 Discourse 사용자 이름이 표시되지 않습니다. [링크](https://gyazo.com/9b15f5ea2bf6b3e2073ffeb928e03c82)

두 가지 질문이 있습니다.

1. 여기서 제가 놓치고 있는 것이 있을까요? 새로운 양식이 작동하도록 하려면 추가 설정이 필요한가요?
2. WP에 이미 존재하는 멤버들의 경우, Discourse에 사용자를 생성하고 WordPress와 연결하는 방법은 무엇인가요?

수정: 추가 분석 결과, 첫 번째 양식을 통해서도 일부 사용자는 Discourse에 생성되지 않는 것으로 보입니다.

---

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 26, 2022, 3:43오전 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/2 "2022-07-26T03:43:21Z")

</div>

혹시 이 문제를 겪어본 분이 계신가요? 정말 막막합니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 26, 2022, 8:18오전 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/3 "2022-07-26T08:18:22Z")

</div>

Himanshu\_Singh님,

사용자가 어떻게 보는지에 초점을 맞춰 단계별로 설명해 주실 수 있을까요?

1. “표준 등록” 양식의 경우;
2. “사용자 등록” 양식의 경우.

예를 들어:

1. 사용자가 양식에 접속하여 정보를 입력합니다.
2. 사용자가 discourse로 리다이렉트됩니다.

원치 않는 상황이 발생하는 단계와, 대신 일어나기를 원하는 단계도 포함해 주세요.

---

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 27, 2022, 12:19오전 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/4 "2022-07-27T00:19:25Z")

</div>

Angus님,

표준 등록 프로세스에서는 다음과 같은 흐름을 따릅니다.

1. 사용자가 폼에 이름, 이메일, 비밀번호를 입력합니다.
2. 이후 사용자는 자동으로 로그인됩니다.
3. 사용자가 커뮤니티 링크를 클릭하면 자동으로 Discourse에 로그인됩니다. (현재까지 [Discourse Connect](https://meta.discourse.org/t/13045?silent=true) 플러그인이 Discourse에서 새 사용자를 생성하는 역할을 수행했기 때문입니다.)

두 번째 폼의 경우,

1. 사용자는 이름과 이메일만 입력합니다.
2. 임시 비밀번호를 제공합니다.
3. 나머지 과정은 동일하며, 즉 가입 시 사용자가 자동으로 로그인됩니다.
4. 그러나 이 경우 Discourse에서 사용자가 생성되지 않습니다.

[Discourse Connect](https://meta.discourse.org/t/13045?silent=true) 설정에서 등록 폼 변경에 의해 트리거되는 항목을 찾지 못했습니다. WordPress에서 사용자 등록 시 트리거되어야 하는 훅이 두 번째 폼의 경우 트리거되지 않고 있는 건가요?

사실상 WordPress에서 Discourse에 사용자를 생성하는 데 사용되는 훅은 무엇인가요? Discourse에서 활동을 트리거하기 위해 API 호출이 이루어져야 할 것입니다. 어떤 이유로 인해 이 호출이 실행되지 않는 것은 아닌가요?

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 27, 2022, 9:11오전 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/5 "2022-07-27T09:11:12Z")

</div>

> [@Himanshu\_Singh](#):
>
> 하지만 이 경우 사용자는 Discourse에 생성되지 않습니다.

이러한 사용자가 Discourse에서 "로그인"을 클릭하면 어떤 일이 일어나나요? 그들이 로그인하려고 할 때 정확히 어떤 일이 발생하는지 설명해 주세요. WordPress에서 생성된 후에도 관리 패널에 사용자가 표시되지 않는다는 점은 이해하고 있지만, 이는 약간 다른 질문입니다.

---

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 27, 2022, 7:42오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/6 "2022-07-27T19:42:57Z")

</div>

**WP에 사용자가 등록되어 있는 첫 번째 경우 -**  
Discourse에서 로그인 버튼을 클릭할 필요가 없으며, WP에서 다음 링크를 클릭하면 자동으로 로그인됩니다 -

[https://community.showprowess.com/session/sso?return\_path=/](https://community.showprowess.com/session/sso?return_path=/)

WP에서 Discourse로 이동하기 위해 단순히 링크 - [https://community.showprowess.com/](https://community.showprowess.com/) - 만 사용하면, 사용자는 로그인되지 않은 상태이며 Discourse에서 로그인 버튼을 클릭해야 합니다.

사용자가 로그인되면 WP에서 로그아웃할 때까지 로그인 상태가 유지됩니다.

이는 문제를 일으키는데, 사용자가 /session/sso?return\_path=/ 를 클릭하지 않으면 로그인되지 않기 때문입니다. 이로 인해 WP에서 Discourse의 개인 메시지 페이지로 사용자를 유도하는 것이 제한됩니다. (제품의 일부로 필요한 기능입니다)

예를 들어, 사용자 X에게 개인 메시지를 보내려면,  
WP의 해당 사용자 맞춤 게시물에 이 링크를 추가합니다 -  
[https://community.showprowess.com/new-message?username=x&title=Message%20from%20](https://community.showprowess.com/new-message?username=x&title=Message%20from%20)

이것이 처음 클릭하는 링크이기 때문에 메시지 상자가 열리지 않습니다. 대신 Discourse에 로그인됩니다. 이제 돌아가서 같은 링크(메시지 링크)를 다시 클릭해야 작동합니다.

다음과 같이 보입니다 -

> **[Gyazo](https://gyazo.com/1719dac4511211587282858a3c4d4672)**
>
> Gyazo is the easiest way to record screenshots & videos you can share instantly. Save time with async visual communication that's effortless and engaging.

이는 사용자에게 번거롭습니다.

이전에는 사용자가 자동으로 Discourse에 로그인되고 [https://community.showprowess.com](https://community.showprowess.com) URL이 로그인된 Discourse 페이지로 이동했기 때문에 모든 것이 정상적으로 작동했습니다. 아마도 브라우저 쿠키 등을 통해 사용자가 로그인되었을 수 있지만, 이제는 더 이상 작동하지 않습니다.

**Discourse에 사용자가 등록되어 있지 않은 경우**  
이것은 새 양식과 구 양식 모두에서 발생하고 있습니다.  
이 경우, 다시 로그인하여 온보딩 과정을 거쳤고, 이번에는 Discourse에 사용자가 생성되었습니다. 그 전에는 Discourse에 사용자가 존재하지 않았습니다(다시 로그인하기 전에 관리자 영역의 신규 사용자 목록을 확인했습니다).

위와 동일한 단계를 따랐습니다 - /sessions URL을 클릭하여 Discourse에 자동 로그인합니다. 커뮤니티 도메인만 클릭하면 로그인되지 않습니다.

불행히도, 등록 시에는 사용자가 생성되지 않지만 첫 번째 로그인 시에는 생성되는 경우를 재현할 수 없습니다. 이는 모든 신규 사용자 등록에서 발생하는 것이 아니라 매우 이상합니다.

이 정보가 도움이 되기를 바랍니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 28, 2022, 10:31오전 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/7 "2022-07-28T10:31:12Z")

</div>

솔직히 말씀드리면, 이전 두 개의 다른 Wordpress 가입 양식이 문제를 일으킨다고 설명하셨던 내용과 이번 문제 설명이 어떻게 관련이 있는지 약간 혼란스럽습니다. 하지만 그래도 여기서 도움을 드릴 수 있다고 생각합니다.

먼저 이해해야 할 점은, 서로 다른 두 도메인의 두 가지 다른 서비스에 즉시 로그인되어 있을 수 있는 방법이 없다는 것입니다(과거에도 그런 방법은 없었습니다). A 도메인의 A 서비스에 로그인되어 있고, B 도메인의 B 서비스로 이동했을 때에도 로그인되어 있는 것처럼 보이는 경우가 있습니다. 실제로 일어나는 일은 B 도메인을 방문하고 로그인 프로세스가 시작될 때에만 A 서비스를 통해 B 서비스에 로그인된 것입니다. 그 이전에는 아닙니다.

또한 이해해야 할 점은, 세션이 필요한 앱 내 특정 위치로 사용자를 리디렉션하려는 당신이 설명하는 특정 시나리오를 제외하고는, 대부분의 사용자는 B 서비스에서 가끔 "로그인"을 클릭해야 한다는 사실에 신경 쓰거나 알아채지 못한다는 것입니다. 저는 고객과 함께 ID 솔루션을 다루면서 사이트 관리자가 사용자보다 이 문제에 훨씬 더 민감하다는 것을 경험적으로 알고 있습니다.

> [@Himanshu\_Singh](#):
>
> 이전에는 사용자가 Discourse에 자동으로 로그인되어 있었고, [https://community.showprowess.com](https://community.showprowess.com) URL로 이동하면 로그인된 Discourse 페이지로 연결되어 모든 것이 정상적으로 작동했습니다. 아마도 브라우저 쿠키 등을 통해 로그인되었던 것 같지만, 이제는 더 이상 작동하지 않습니다.

이것이 작동하는 방식은 변하지 않았습니다. 사용자가 “자동으로” 로그인된 것처럼 보이는 경우, 실제로 일어나는 일은 사용자가 Wordpress로 리디렉션되었다가, Wordpress 세션이 인증되면 다시 Discourse로 리디렉션되는 것입니다. 이미 Wordpress에 로그인되어 있다면, 사용자가 아무것도 할 필요가 없는 리디렉션이 일어나므로 Discourse에 “자동으로” 로그인된 것처럼 보일 것입니다.

“자동” 로그인을 트리거하고 로그인 후 Discourse 내 특정 위치로 리디렉션하는 방법 중 하나는 이미 공유하신 경로를 사용하는 것입니다.

```plaintext
https://community.showprowess.com/session/sso?return_path=[Discourse 내 아무 경로]

```

이 URL을 사용할 때 사용자가 이미 Wordpress에 로그인되어 있지만 아직 Discourse에 로그인되지 않은 상태라면, 다음과 같은 일이 일어납니다:

1. Discourse가 자동으로 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 로그인 프로세스를 시작합니다.
2. 사용자의 브라우저가 Wordpress로 리디렉션됩니다.
3. 사용자가 이미 로그인되어 있으므로, 자동으로 Discourse로 다시 리디렉션됩니다.
4. `1`에서 사용된 URL에 `return_path` 값이 있었다면, 사용자는 해당 위치로 리디렉션됩니다.

사용자의 관점에서는 브라우저가 잠시 로딩되는 것을 볼 수 있지만, 실질적으로 Discourse에 “자동으로” 로그인되고 앱의 특정 부분으로 리디렉션됩니다.

참고로 사이트 설정 `discourse connect allows all return paths`를 true로 설정하면, `return_path`를 별도 도메인인 다른 URL로 설정할 수도 있습니다.

---

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 28, 2022, 2:32오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/8 "2022-07-28T14:32:29Z")

</div>

감사합니다! WP에서 Discourse로 사용자를 자동 로그인하는 문제를 해결하는 데 도움이 됩니다. return\_path를 사용하면 사용자를 Discourse의 원하는 페이지로 유도할 수 있습니다. 이로써 사용자를 메시지 페이지로 유도하는 문제가 해결되었습니다.

하지만 여전히 WordPress에서 사용자가 생성될 때 Discourse에서 사용자가 생성되지 않는 경우가 있는 이유를 확신하지 못하겠습니다. SSO를 통해 사용자가 Discourse에 실제로 생성되는 시점이 언제인지 아시나요?

1. WP에서 사용자가 생성될 때인가요?
2. 새로운 WordPress 사용자가 Discourse에 접근을 시도할 때 사용자가 생성되고 로그인되어 Discourse로 유도되는 시점인가요?

WP에서 Discourse에 사용자를 생성하기 위해 어떤 훅(hook)을 사용해야 하나요?

WP에서 사용자가 생성될 때 Discourse에서 사용자가 생성되지 않는 엣지 케이스가 무엇인지 이해하려고 노력하고 있습니다.

실용적인 사용 사례:  
저는 매주 새 사용자에게 환영 메시지를 보내고 있습니다. 지난주에는 WP에 30명의 사용자가 가입했지만 Discourse에는 16명만 생성되었습니다. 환영 메시지에서 그들을 태그하려고 하면 모두 태그할 수 없는데, 이는 저에게 매우 이상하게 느껴집니다.

Angus님의 도움에 감사드립니다. 정말 감사드립니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 28, 2022, 3:50오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/9 "2022-07-28T15:50:24Z")

</div>

기본 설정에서는 사용자가 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)를 통해 Discourse에 처음 로그인할 때 Discourse에 사용자 계정이 생성됩니다. 그 시점까지는 Discourse에 해당 사용자가 존재하지 않습니다.

[WP Discourse](https://github.com/discourse/wp-discourse) 플러그인에는 "로그인 시 Discourse 사용자 생성 또는 동기화"라는 설정이 있으며, 이 설정을 활성화하면 사용자가 Wordpress에서 등록한 후 Discourse API를 통해 사용자 계정을 생성합니다. 이 설정은 wp 액션 `wp_login`을 사용하므로, 이 기능이 작동하려면 사용자 등록 프로세스에서 해당 액션이 트리거되어야 합니다.

---

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 28, 2022, 4:39오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/10 "2022-07-28T16:39:13Z")

</div>

이제 모든 것이 이해가 됩니다. Angus, 감사합니다.

현재 “Create or Sync Discourse Users on Login” 설정이 활성화되어 있습니다. 일부 사용자는 WordPress에 등록은 하지만 첫 로그인 시 커뮤니티를 방문하지 않기 때문에 Discourse에서 사용자가 생성되지 않는 문제입니다. 나중에 다시 로그인하여 커뮤니티 URL을 클릭하면 그때 비로소 사용자가 생성됩니다.

현재 WordPress 등록 후 자동 로그인 기능은 `wp_login`을 사용하지 않습니다.

```plaintext
add_action( 'cred_save_data', 'cred_autologin_V3', 10, 3 );
    
function cred_autologin( $post_id, $form_data ){
  if ( ID1 == $form_data['id'] ) { // 필요에 따라 수정
    wp_set_current_user( $post_id );
    wp_set_auth_cookie( $post_id );
// wp_redirect( home_url( '/some-ending-page/' ) );
  // exit(); 
  }
}

```

WordPress 등록 시점에 Discourse에서 사용자가 생성되기를 선호합니다.  
사용자 등록 폼에 커스텀 훅이 있어 API를 실행할 수 있습니다. Discourse에서 사용자를 생성하기 위해 이 커스텀 훅에 추가할 수 있는 코드가 있을까요?

> [@angus](#):
>
> . 이 설정은 `wp_login` 액션을 사용하므로, 이 기능이 작동하려면 사용자 등록 프로세스에서 해당 액션을 트리거해야 합니다.

이 부분이 어떻게 해야 하는지 모르겠습니다. 즉, 커스텀 훅에서 `wp_login`을 트리거하는 방법을 알고 싶습니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 28, 2022, 6:24오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/11 "2022-07-28T18:24:22Z")

</div>

> [@Himanshu\_Singh](#):
>
> 제가 어떻게 해야 할지 모르는 부분이 바로 커스텀 훅에서 wp\_login을 트리거하는 것입니다.

코드에 액션 트리거를 추가하기만 하면 됩니다.

```plaintext
do_action( 'wp_login' );

```

---

<div class="post-metadata">

### Author: ![Himanshu\_Singh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/himanshu_singh/32/216438_2.png) [@Himanshu\_Singh](https://meta.discourse.org/u/Himanshu_Singh)
#### Post date: [7월 28, 2022, 6:43오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/12 "2022-07-28T18:43:25Z")

</div>

그래서 말씀하신 대로 정확히 수행했습니다.

```plaintext
add_action( 'cred_save_data', 'cred_autologin_V3', 10, 3 );
    
function cred_autologin( $post_id, $form_data ){
  if ( ID1 == $form_data['id'] ) { // 필요에 따라 수정
    wp_set_current_user( $post_id );
    wp_set_auth_cookie( $post_id );
   do_action( 'wp_login' );

// wp_redirect( home_url( '/some-ending-page/' ) );
  // exit(); 
  }
}

```

하지만 다음과 같은 오류가 발생합니다:  
**메시지:** Uncaught ArgumentCountError: Too few arguments to function WPDiscourse\WordPressEmailVerification\WordPressEmailVerification::verify\_email\_after\_login(), 1 passed in /home/customer/www/[domain.com/public\_html/wp-includes/class-wp-hook.php](http://domain.com/public_html/wp-includes/class-wp-hook.php) on line 307 and exactly 2 expected in /home/customer/www/[domain.com/public\_html/wp-content/plugins/wp-discourse/lib/wordpress-email-verification.php:128](http://domain.com/public_html/wp-content/plugins/wp-discourse/lib/wordpress-email-verification.php:128)

이메일 인증을 우회하는 다른 코드가 있습니다.

```plaintext
add_filter( 'discourse_email_verification', 'disable_discourse_email_verification_prowess');
function disable_discourse_email_verification_prowess() {
  wp_mail( 'himanshu@eshowprowess.com', 'User verified', 'Status must change' ); 
   
    return false;
}

```

이것은 코드 순서 문제인가요, 아니면 wp\_login 액션에 어떤 매개변수를 전달해야 하나요?

수정: 사용자는 WP에서 생성되고 로그인되었지만, Discourse에서는 사용자가 생성되지 않았습니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 28, 2022, 6:59오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/13 "2022-07-28T18:59:07Z")

</div>

해당 액션에 대해 좀 더 읽어보시길 권합니다. 이 부분에 대해서는 워드프레스 공식 문서가 저보다 더 좋은 자료입니다. 불행히도, 여기서 사용자 정의 워드프레스 로그인 코드를 어떻게 통합하는 것이 가장 좋은지 파악하기는 어려울 것 같습니다. 현재 겪고 계신 문제에 대해서는 원인을 파악한 것 같습니다.

> **[wp\_login – Hook | Developer.WordPress.org](https://developer.wordpress.org/reference/hooks/wp_login/)**
>
> Fires after the user has successfully logged in.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [8월 27, 2022, 6:59오후 UTC](https://meta.discourse.org/t/unable-to-create-user-in-discourse-from-wp-with-new-registration-form/233700/14 "2022-08-27T18:59:16Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
