규모가 큰 WordPress 매거진에 Discourse를 효과적으로 활용하는 방법

안녕하세요. 안녕하세요,
저는 https://www.svetandroida.cz/ 라는 규모가 큰 기술 전문 온라인 매거진을 운영하고 있습니다. 과거에 알림, 사용자 리뷰, 카르마 등 여러 커뮤니티 기능을 사용자에게 제공하려고 시도해 보았지만, WordPress는 이러한 기능을 기본적으로 지원하지 않으며, 제3자 솔루션을 사용하면 시간이 지남에 따라 항상 문제가 발생했습니다.

그래서 우리는 WordPress를 단순히 콘텐츠를 표시하는 매거진 기능에만 순수하게 사용하기로 결정했습니다. 빠르고 깔끔하게 말이죠. 그리고 사용자를 위한 모든 커뮤니티 요소를 이 일을 훨씬 더 잘 처리하는 Discourse로 완전히 이전하기로 했습니다.

이 구성은 저에게 이상적으로 보입니다. 하지만 우리는 이 매거진을 약 13년간 운영해 왔고, 그 기간 동안 수십만 개의 댓글과 수만 명의 등록된 사용자를 보유하고 있습니다. Discourse 연동이 가장 우아하고, 사용자 관점에서 가장 효과적이도록 만드는 방법에 대해 여러분의 생각을 듣고 싶습니다.

사실들:

  • WordPress 매거진은 https://www.svetandroida.cz/에서 운영됩니다.
  • 우리는 Discourse 커뮤니티를 https://komunita.svetandroida.cz/에서 운영합니다.
  • 사용자 계정을 Discourse로 관리하기를 원하며, 이것이 더 낫다고 생각합니다.
  • 매일 약 5개에서 15개의 기사를 발행합니다.
  • 수만 개의 기사를 보유하고 있습니다(이미 많은 부분을 삭제했습니다 :)).
  • 적극적으로 댓글을 달고 있는 사용자는 수십 명에서 소규모로 수백 명 정도입니다.
  • Discourse용 WordPress 플러그인을 설정했으며 모든 것이 잘 작동하는 것 같습니다. 아직 설정하지 않은 것 중 하나는 SSO입니다.
  • WordPress 매거진에 발행하는 기사는 자동으로 Discourse에 숨김 상태로 발행됩니다.

무엇을 해결해야 하며 어떻게 해결해야 합니까? 더 나은 솔루션을 생각해 볼 수 있을까요?

사용자 로그인
WordPress 플러그인을 사용하여 DiscourseConnect 클라이언트를 설정하고 내 편집자들이 깨지거나 접근이 차단되지 않기를 바랍니다 :). 그러지 않기를 바랍니다. 농담이지만, 토론을 주의 깊게 읽었음에도 불구하고 여전히 100% 명확하지 않은 유일한 부분이 바로 이 부분이라는 것은 사실입니다.

WordPress 매거진 사이트(이미 WordPress 계정이 있는 경우)에 사용자가 로그인하려고 하면 Discourse에도 자동으로 계정이 생성되기를 바랍니다.

혹시 그렇지 않다면, 그 몇십 명의 사용자에게 기존 WordPress 사용자 계정을 잊고 Discourse에서 새로운 계정을 만들 것을 요청하는 것이 괜찮을 것입니다.

기사 주제에 대한 댓글
현재 WordPress에 이미 게시된 사용자 댓글을 새로 출시된 Discourse로 이전하는 우아한 방법을 찾지 못했습니다. 만약 제가 틀렸다면 알려 주십시오.

따라서 이미 게시된 댓글은 WordPress에 그대로 남아 있고, 새로운 댓글은 Discourse에 게시될 것입니다.

Discourse에 게시된 댓글을 WordPress 기사 아래로 다시 이전하지는 않을 것이며, 각 WordPress 기사 아래에 해당 Discourse 기사로 연결되는 링크만 배치할 것입니다.

현재의 방식은 모든 게시된 기사가 Discourse로 이전되며, 누군가 Discourse에서 새로운 댓글을 추가할 때에만 비공개에서 공개로 전환됩니다. 이 솔루션은 나쁘지 않지만, 우리 경우에는 관리자로서 Discourse에서 수천 개의 숨겨진 스레드를 보게 됩니다. :frowning:

이 문제를 해결하는 더 우아한 방법은 없을까요? 예를 들어, WordPress 기사가 게시된 후 숨김 상태로 Discourse로 이전되는 대신, WordPress 기사 아래 링크를 클릭하고 댓글을 추가할 때만 Discourse 스레드가 생성되도록 하는 것은 어떨까요?

그렇게 하면 포럼에 보이지 않는 수천 개의 스레드가 존재하지 않을 것입니다.

그리고 완벽하다면, WordPress의 "마법 링크"를 통해 Discourse 스레드가 임시로 생성되고, 혹시 댓글이 추가되지 않고 사용자가 마음을 바꾸거나 떠나면 스레드가 일정 시간 후 삭제되는 것이 이상적입니다.

이곳까지 읽어 주셔서 감사합니다(보상으로 AI 이미지를 보내 드립니다) 그리고 여러분의 아이디어와 통찰을 기대합니다.

DiscourseConnect 클라이언트 기능은 다른 형태의 소셜 로그인과 유사한 방식으로 작동합니다. 예를 들어, Facebook을 통해 WordPress에 로그인하는 것과 유사하지만, Facebook 대신 Discourse 사이트가 인증 제공자로 사용됩니다. 즉, 사용자가 DiscourseConnect를 통해 WordPress 사이트에 로그인하려면 먼저 Discourse 사이트에 계정을 생성해야 합니다. 다만, Discourse 계정을 생성하지 않는다고 해서 WordPress 사이트 로그인이 완전히 차단되는 것은 아닙니다. WordPress 사이트가 DiscourseConnect 클라이언트로 설정된 경우, WordPress의 일반적인 사용자 이름/비밀번호 로그인은 여전히 사용 가능합니다.

WordPress 사이트에 로그인하는 데 익숙한 사용자가 많으므로, Discourse 사이트의 DiscourseConnect _제공자_로 WordPress 사이트를 사용하는 것도 고려해 볼 가치가 있을 수 있습니다. 그렇게 설정하면 기존 사용자 모두가 링크 하나만 클릭하면 새 Discourse 사이트에 쉽게 로그인할 수 있습니다. 해당 링크를 만드는 방법에 대한 자세한 내용은 여기에서 확인하세요: DiscourseConnect 로그인 링크 만들기.

사이트의 소셜 측면을 WordPress에서 Discourse로 완전히 이전하려는 것 같으므로, WordPress 사이트를 DiscourseConnect 제공자로 사용하지 않는 이유가 될 수 있습니다. 제 우려는 사용자가 Discourse에 새 계정을 생성해야 하는 대신, WordPress 계정으로 로그인하고 링크를 클릭하여 포럼에 접근하는 것보다, 일부 사용자가 새 사이트에 가입하는 것을 꺼릴 수 있다는 점입니다.

WordPress를 DiscourseConnect _제공자_로 사용할 경우 알아야 할 주요 사항은 그렇게 구성하면 그것이 Discourse의 유일한 로그인 방법이 된다는 것입니다. 즉, 일부 사용자는 WordPress를 통해 Discourse에 로그인하고, 다른 사용자는 Discourse 사이트에서 사용자 이름/비밀번호로 계정을 등록하여 로그인하는 방식으로 혼용할 수 없습니다. 모든 사용자가 Discourse 사이트에 접근하려면 WordPress에 계정이 있어야 합니다.

WordPress를 DiscourseConnect 클라이언트로 사용하는 것과 제공자로 사용하는 것의 차이가 명확하지 않다면 알려 주세요.

기술적으로는 가능하지만, 잘 테스트된 방법이 있다고 생각하지는 않습니다. 이 커뮤니티의 다른 구성원들이 어떻게 접근해야 할지에 대한 아이디어를 가지고 있을 수 있습니다.

가능할 수 있습니다. 제 생각에는 이것이 문제를 초래할 수 있을 것 같습니다.

Discourse 사이트에서는 다음 쿼리 문자열을 URL에 추가하여 목록에 없는(unlisted) 주제를 필터링할 수 있습니다: ?status=listed. 예를 들어 https://meta.discourse.org/latest?status=listed. “공개(open)” 및 “폐쇄(closed)” 주제 보기 간 전환에 사용할 수 있는 기존 테마 컴포넌트가 있습니다: Topic Status Filter. 아직 존재하지 않는다면, 해당 필터에 “목록에 있음(listed)” 및 “목록에 없음(unlisted)” 상태를 추가하는 것은 비교적 쉬울 것입니다. 하지만 그 경우 해당 필터는 스태프 사용자만 볼 수 있기를 원할 것입니다.

이것은 크론 작업(cron job)에 의해 처리되는 API 요청을 통해 WordPress에서 구현할 수 있습니다.

시간 내어 답변해 주셔서 감사합니다.
DiscourseConnect에 대해서는 이미 충분히 이해했습니다. 자세한 설명 감사합니다. 그러면 WordPress에서 클라이언트로 DiscourseConnect를 설정해 보겠습니다.

기존의 댓글들은 WordPress에서 Discourse로 이전하는 데 드는 노력을 정당화할 만큼 충분한 가치가 있다고 보기 어렵습니다.

하지만 게시된 기사에 기반한 토론은 여전히 제 머릿속에 남아 있습니다 :). 필터는 관리자로서 “숨겨진” 스레드를 보지 못하는 문제를 해결하는 방법이지만, 다른 방법이 있을지도 모른다는 생각을 좀처럼 떨칠 수가 없습니다.

문제가 발생할 수 있다고 언급하셨는데, 우려하시는 문제 상태들을 몇 가지 나열해 주실 수 있을까요?

API를 통해 해결할 수 있겠지만, 저희는 프로그래머가 아니라서 어떻게 동작하는지 충분히 상상하기가 어렵습니다.

제가 상상하는 작동 방식은 다음과 같습니다. 사용자가 (아직 게시되지 않은) Discourse 주제 링크를 클릭하면, WordPress 백엔드에서 해당 게시물을 Discourse에 게시하도록 함수가 트리거됩니다. 사용자가 링크를 클릭할 때 Discourse로의 게시를 트리거하는 것은 가능합니다.

제가 상상하는 문제들:

  • 게시물이 아직 게시되지 않은 경우, 링크가 어디를 가리키나요? 주제가 게시된 후에야 Discourse에서 해당 주제의 URL을 알 수 있습니다. 사용자가 링크를 클릭할 때 배경에서 주제가 게시되고, Discourse에서 받은 응답을 기반으로 사용자가 Discourse 주제로 리디렉션되도록 하는 기능이 개발되어야 합니다.

  • 웹사이트가 매우 혼잡하여 많은 사용자가 동시에 Discourse 주제 게시를 트리거하는 링크를 클릭할 경우 어떻게 될지 확신이 서지 않습니다. 아마 괜찮을 수도 있지만, 위험해 보입니다.

수정: 첫 번째 문제를 해결하는 한 가지 방법은 사용자에게 현재 진행 상황을 알려주고 "주제를 게시하는 동안 잠시 기다려 주세요"라는 메시지를 표시하는 것입니다. 주제가 게시되면 주제에 대한 링크를 생성하고 사용자가 클릭하도록 안내할 수 있습니다. 이 과정은 몇 초가 걸릴 수 있습니다.

즉, WordPress 사이트의 기사 아래에 토론에 참여할 수 있는 일반 링크를 배치하는 작은 JavaScript를 사용할 수 있습니다. 먼저 JavaScript가 함수를 호출하여(WordPress 플러그인이 이미 수행하는) Discourse에서 스레드를 생성하고, 사용자에게 스레드가 생성 중임을 표시합니다. 그런 다음 JavaScript가 Discourse에서 스레드가 생성되었음을 확인하면, 사용자를 Discourse의 댓글 스레드로 리디렉션합니다.

이렇게 이해한 것이 맞나요, 아니면 제가 너무 단순하게 생각하고 있는 걸까요? :slight_smile:

사용자를 자동으로 리디렉션하지 않는 것이 더 간단할 수 있지만, 말씀하신 내용은 맞습니다. 사용자가 토픽 생성을 위한 링크를 클릭하면 스크립트가 WordPress 서버에서 토픽 URL을 가져오기 위해 주기적으로 요청을 보냅니다. URL을 확보하면 사용자를 해당 Discourse 토픽으로 리디렉션합니다.