WP Discourse 플러그인을 사용하면 WordPress에서 DiscourseConnect를 설정하여 사용자가 WordPress 계정으로 Discourse에 로그인하거나, Discourse 계정으로 WordPress에 로그인할 수 있습니다. DiscourseConnect를 설정하기 전에 먼저 WordPress에 WP Discourse 플러그인을 설치하고 Discourse와 연결해야 합니다. 시작할 준비가 되었다면, 먼저 이 짧은 영상을 시청하시거나 아래 지침을 따르세요.
다음 단계
DiscourseConnect를 설정한 후에는 다음 주제를 확인해 보시는 것이 좋습니다.
지침
시크릿 키 설정
WP Discourse를 DiscourseConnect 제공자(Provider) 또는 클라이언트(Client)로 설정하든, 시크릿 키를 설정해야 합니다. “DiscourseConnect Secret Key” 탭으로 이동하여 문자열(숫자, 문자, 기호 모두 허용)을 입력하세요. 길이는 최소 10자 이상이어야 합니다. 이 키를 만들 때 강력한 비밀번호를 만들 때 사용하는 것과 동일한 규칙을 따르세요. 완료 후 저장했는지 확인하세요.
그 다음, Discourse 사이트 설정(관리자 패널)을 열고 "discourse connect"를 검색하세요. 상단 근처의 설정 중 하나가 discourse connect secret입니다. WP Discourse에서 설정한 시크릿 키를 여기에 붙여넣고 녹색 체크 표시를 클릭하세요.
WordPress로 Discourse 로그인 (DiscourseConnect Provider)
아래 지침을 따르기 전에 WP Discourse가 Discourse와 연결되어 있고 시크릿 키가 설정되어 있는지(
) 확인하세요
사용자가 WordPress 계정 정보로 Discourse에 로그인할 수 있도록 하려면 WP Discourse를 DiscourseConnect 제공자로 설정해야 합니다. WP Discourse 설정에서 DiscourseConnect Provider 탭으로 이동하여 Enable DiscourseConnect Provider 체크박스를 선택하고 설정을 저장하세요.
다음으로, Discourse 사이트 설정으로 이동하여 검색창에 "discourse connect"를 입력하여 모든 Discourse DiscourseConnect 설정을 확인하세요. 먼저, discourse connect url을 WordPress의 URL로 설정하세요. 마지막 단계는 enable discourse connect를 선택하는 것입니다. 이 옵션을 선택하면 사용자가 WordPress를 통해서만 Discourse에 로그인할 수 있으므로, 준비가 완료되었는지 확인하세요.
Discourse에서 discourse connect를 활성화한 후, 올바르게 설정되었는지 확인하려면 브라우저의 시크릿 모드 창을 여세요. 일반적인(비시크릿) 브라우저 창에는 관리자 계정으로 로그인된 상태를 유지하세요(문제가 발생하여 설정을 되돌려야 할 경우를 대비하여). 시크릿 모드 창에서는 Discourse의 ‘Sign Up’ 버튼이 더 이상 표시되지 않는 것을 확인할 수 있습니다. ‘Log In’ 버튼을 클릭하세요. WordPress 로그인 화면이 표시되어야 합니다. WordPress 자격 증명을 입력하여 로그인하세요. 그러면 Discourse로 리다이렉트되어 로그인된 상태가 됩니다.
문제가 발생하거나 뭔가 잘못되었다고 느껴지면, 일반적인 브라우저 창으로 돌아가 enable discourse connect를 비활성화하여 사용자가 정상적으로 Discourse에 로그인할 수 있도록 하세요. 만약 일반적인 브라우저 창에서 관리자 계정으로 로그인되어 있지 않다면, 아래 문제 해결 섹션의 “Discourse 콘솔을 통해 DiscourseConnect 비활성화” 항목을 참고하여 Discourse에 대한 액세스를 다시 확보하세요.
이메일 인증
Discourse는 모든 사용자의 이메일 주소가 인증되어야 한다고 가정하지만, WordPress는 사용자에게 이메일 주소를 인증하도록 강제하지 않습니다. 기본 WordPress 설정에서는 등록 과정에서 사용자의 이메일 주소를 인증하는 것이 비교적 쉽지만, 프론트엔드 등록 양식을 생성하는 플러그인을 사용하는 사이트(예: WooCommerce로 추가할 수 있는 등록 양식)의 경우 WP Discourse 플러그인은 사용자의 이메일을 인증할 수 없습니다.
사용자의 이메일이 WordPress에서 인증되지 않은 경우, WordPress 사용자가 포럼에 로그인하기 전에 Discourse에서 발송하는 이메일 인증 알림에 응답해야 합니다. 이 플러그인에는 이 동작을 오버라이드할 수 있는 몇 가지 필터가 있습니다. 자세한 내용은 여기부터 시작하는 코드를 확인하세요.
require_activation 플래그 제거
WordPress가 이메일 주소를 인증하는 것이 확실하다면, Discourse가 이를 수행할 필요가 없도록 알릴 수 있습니다. require_activation 플래그를 완전히 제거하려면 WordPress(예: 테마의 functions.php 파일)에 다음과 같은 코드를 추가하세요:
// 'my_prefix'를 사이트 접두사로 대체하세요.
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
return false;
}
특정 사용자의 require_activation 플래그를 제거하려면 다음과 같은 코드를 사용하세요:
// 'my_prefix'를 사이트 접두사로 대체하세요.
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
$user = get_userdata( $user_id );
if ( /* $user에 대해 테스트되는 특정 조건 */ ) {
return true;
}
return false;
}
Userdata Webhook
이 Webhook은 역사적인 이유로 존재합니다 - Discourse 이름 필드를 자동으로 채우는 것은 이제
Create or Sync Discourse Users on LoginDiscourseConnect 제공자 옵션을 사용하여 달성할 수 있습니다.
Update Userdata Webhook(“Webhooks” 설정 패널에 위치)은 WordPress가 Discourse의 DiscourseConnect 제공자인 경우 사용할 수 있습니다. 이 Webhook은 WordPress에서 사용자의 Discourse 이름 필드를 자동으로 채웁니다.
DiscourseConnect 로그인 링크 생성
DiscourseConnect 제공자 옵션이 활성화되어 있다면, 다음과 같은 구조의 링크를 생성하여 WordPress 사이트에 DiscourseConnect 로그인 링크를 추가할 수 있습니다:
<a href="https://discourse.example.com/session/sso?return_path=/">Community</a>
return_path의 값을 사용자가 최종적으로 도달하길 원하는 포럼의 페이지로 설정하세요. WordPress 대시보드의 메뉴 섹션에서 이 구조의 URL을 커스텀 링크로 추가하여 WordPress 메뉴에 SSO 로그인 링크를 추가할 수 있습니다.
Discourse로 WordPress 로그인 (DiscourseConnect Client)
사이트가 Discourse의 DiscourseConnect 클라이언트로 작동하도록 하려면 DiscourseConnect Client 탭을 클릭하세요. 해당 페이지에서 Enable DiscourseConnect Client 및 Add Login Link 옵션을 선택하세요.
이제 Discourse 관리자/설정 페이지로 이동하여 'discourse connect’를 검색하여 모든 DiscourseConnect 옵션을 확인하세요.
- ‘enable discourse connect provider’ 설정을 선택하세요
- WordPress의
DiscourseConnect Secret Key를 Discourse의 ‘discourse connect provider secrets’ 설정의 ‘secret’ 필드로 복사하세요. 해당 설정의 ‘domain’ 필드에는 WordPress 사이트의 도메인을 입력하세요. 그런 다음 설정을 저장하기 위해 녹색 체크 표시를 클릭하세요.
완료되면, Discourse의 ‘discourse connect provider secrets’ 설정은 다음과 같이 보일 것입니다(도메인은 WordPress 도메인으로 설정됨):
이제 Discourse가 WordPress 사이트의 DiscourseConnect 제공자로 작동하고 있습니다.
브라우저의 시크릿 모드 창에서 WordPress 사이트를 엽니다. 이제 로그인 페이지로 이동하면 로그인 양식 아래에 ‘Log in with Discourse’ 링크가 보일 것입니다. 클릭하면 Discourse 로그인 양식으로 이동합니다.在那里 로그인하면 WordPress 로그인 페이지로 리다이렉트되며, Discourse와 계정을 동기화해야 한다는 알림이 표시됩니다. 알림의 지침을 따라 계정을 연결하면 이제 Discourse를 통해 WordPress 사이트에 로그인할 수 있습니다.
참고: 이 동작은 WordPress와 Discourse 모두에 기존 계정이 있는 사용자만 영향을 미칩니다. Discourse DiscourseConnect를 통해 생성된 새 WordPress 계정은 ‘Log in with Discourse’ 링크를 처음 클릭할 때 WordPress에 자유롭게 로그인할 수 있습니다. WordPress 사이트와 Discourse 포럼 모두에 기존 계정이 있는 사용자가 Discourse를 통해 로그인하기 쉽게 하려면, DiscourseConnect Client 옵션 탭에서 Sync Existing Users by Email 체크박스를 선택하세요.
Discourse 로그아웃 동기화
DiscourseConnect가 활성화되면, Discourse 사이트 설정 logout redirect에 사이트의 home_url과 쿼리 파라미터 request=logout를 추가하여 Discourse 로그아웃을 WordPress 사이트와 동기화할 수 있습니다. 이 설정은 /admin/site_settings/category/users의 Discourse 설정 섹션에 있습니다. ‘logout redirect’ URL의 예시는 다음과 같습니다:
http://example.com/?request=logout
문제 해결
포럼의 DiscourseConnect 제공자로 WordPress를 사용하는 데 문제가 있는 경우, 먼저 확인해야 할 사항은 다음과 같습니다:
- WordPress와 Discourse에 설정된 DiscourseConnect 시크릿 키가 동일한지 확인하세요
- WordPress 사이트에서
Enable DiscourseConnect Provider가 선택되었는지 확인하세요 - Discourse에서 올바른
discourse connect url이 입력되었는지 확인하세요.
DiscourseConnect 사용 시 “Login Error”
사용자가 Discourse에 로그인하려고 할 때 “Login Error” 메시지를 받는 경우, 다음 링크를 참고하세요.
Debug and fixing common DiscourseConnect issues.
DiscourseConnect 비활성화
DiscourseConnect가 작동하지 않는 경우, enable discourse connect 사이트 설정을 비활성화하여 끌 수 있습니다. 어딘가에 관리자 계정으로 로그인되어 있지 않아 이를 끄지 못하는 경우에도 걱정하지 마세요, 다시 액세스하여 끄는 몇 가지 방법이 있습니다.
/users/admin-login을 통한 로그인
새 브라우저 창을 열고 URL 바에 포럼 URL 뒤에 /users/admin-login을 입력하세요. 예:
https://community.mysite.com/users/admin-login
관리자 이메일을 입력하도록 요청하는 입력 필드가 표시되어야 합니다. 이메일을 제출하면 관리자 계정에 직접 로그인할 수 있는 링크가 포함된 이메일을 받게 됩니다. 그런 다음 사이트 설정으로 이동하여 enable discourse connect를 비활성화하여 DiscourseConnect를 끌 수 있습니다.
만약 어떤 이유로든 이것이 작동하지 않는 경우에도 걱정하지 마세요, 서버 콘솔을 통해 DiscourseConnect를 끌 수 있습니다 (
)
서버 콘솔을 통해 DiscourseConnect 끄기
서버 콘솔이 무엇인지 모르거나 액세스 권한이 없는 경우, 호스팅 제공업체에 도움을 요청하세요. 서버에 SSH로 연결한 후, 실행해야 하는 명령어는 다음과 같습니다:
cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit







