현재 하시는 작업은 Discourse를 WordPress의 SSO 제공자로 사용하는 것 같습니다. 이 방식은 여기에서 설명되어 있습니다: Discourse를 ID 제공자(SSO, DiscourseConnect)로 사용하기. Discourse WordPress 플러그인은 Discourse를 위한 SSO 제공자로 WordPress를 사용하거나, WordPress를 위한 ID 제공자로 Discourse를 사용하는 두 가지 옵션을 제공합니다. 두 방식 모두에 동일한 이름을 사용하다 보니 혼란이 생기는 경우가 있습니다.
이 경우 WordPress를 ID 제공자로 사용하는 것이 더 적절할 것 같습니다. 이 방식을 사용하면 사용자는 WordPress 사이트에서 계정을 생성한 후 WordPress 자격 증명으로 Discourse에 로그인하게 됩니다. 이 방식에서 주의할 점은 사용자가 WordPress를 통해서만 Discourse에 로그인할 수 있다는 것입니다. 즉, 이미 WordPress 계정이 없다면 Discourse 계정을 생성할 수 없습니다. WordPress 회원 사이트와 Discourse를 통합할 때 이것이 적절한 설정이라고 생각합니다.
WordPress가 Discourse의 ID 제공자로 사용될 때, 사용자의 WordPress 활동에 기반하여 사용자의 Discourse 그룹 멤버십을 설정하는 데 유용한 유틸리티 함수가 몇 가지 있습니다. 해당 함수는 여기에서 설명되어 있습니다: WP Discourse SSO를 사용하여 Discourse의 그룹 멤버십 관리.
원래 질문으로 돌아가 보겠습니다:
WordPress 플러그인의 DiscourseConnect 클라이언트 코드를 살펴본 지가 오래되었지만, 질문하신 내용은 해당 코드가 작동하도록 기대하는 방식과 거의 일치한다고 생각합니다. 사용자가 Discourse 계정을 가지고 있다면, WordPress에서 “Discourse를 통해 로그인” 링크를 클릭하기만 하면 해당 사용자를 위한 계정이 생성됩니다.
WordPress를 DiscourseConnect 클라이언트로 사용하는 경우 기술적으로 가능하지만, 변경 사항이 없는 한 문서에 링크한 add_user_to_discourse_group 및 remove_user_from_discourse_group 메서드를 사용할 수 없습니다. 사용자가 Discourse 그룹에 추가될 때 트리거되는 Discourse 웹훅을 설정하고, 그 웹훅을 처리하기 위해 WordPress에 코드를 추가하는 등의 조치가 필요합니다. WordPress에서 Discourse로 그룹을 동기화하려면, WordPress에서 변경 사항이 있을 때 사용자의 그룹을 업데이트하기 위해 Discourse에 API 호출을 해야 합니다. 따라서 WordPress를 DiscourseConnect 제공자로 사용하는 경우 비교적 쉽게 달성할 수 있는 작업이, WordPress를 DiscourseConnect 클라이언트로 사용하는 경우 다소 복잡해질 수 있습니다.