현재 이 작업을 진행 중입니다. 첫 번째 버전은 프론트엔드에 Remix 프레임워크를 사용하는 헤드리스 WordPress 사이트를 위해 제작됩니다. 이 작업이 완료되면 일반 WordPress 사이트를 위한 버전도 만들 예정입니다. 아마도 WP Discourse 플러그인을 확장하는 플러그인 형태가 될 것입니다. 헤드리스 WordPress 사이트에서 수행하는 작업의 대부분을 일반 WordPress 사이트로 이식할 수 있기를 희망하지만, 일부 타협이 필요할 수도 있습니다.
외부 사이트에서 사용자가 직접 댓글을 달 수 있도록 하는 것은 구현이 매우 간단합니다. 주요 요구 사항은 외부 사이트가 사용자의 Discourse 인증 정보를 접근할 수 있어야 한다는 것입니다. 이는 외부 사이트를 Discourse의 DiscourseConnect 제공자로 사용하는 방법이나, Discourse를 외부 사이트의 DiscourseConnect 제공자로 설정하는 방법으로 수행할 수 있습니다.
두 번째 시나리오(Discourse의 DiscourseConnect 제공자가 외부 사이트가 아닌 경우)에서는, 사용자가 외부 사이트에서 댓글을 달려고 할 때 외부 사이트의 계정을 Discourse 계정에 연결해야 합니다(아직 Discourse에 가입하지 않았다면 가입해야 합니다). 이는 사용자의 관점에서 상당히 매끄럽게 처리될 수 있습니다.
그러나 위의 변경 사항만으로는 전체가 일반적인 댓글 시스템처럼 느껴지지 않습니다. 댓글 시스템에 대한 일반적인 기대는 모든 댓글을 읽고 상호작용할 수 있다는 것입니다. WP Discourse 플러그인은 Discourse가 제공하는 특수 라우트에서 가져온 일부 댓글만 표시합니다. 댓글에 대한 상호작용 기능을 제공하지 않습니다.
이 문제의 어려운 부분은 다음과 같습니다:
- 수천 개에 달할 수 있는 주제의 모든 댓글을 WordPress에서 페이지네이션하는 것
- 긴 댓글 목록에서 사용자가 어디에 있는지 알려주는 UI를 제공하는 것
- 다른 댓글에 대한 직접적인 답변인 댓글을 어떻게 표시할지 결정하는 것. (Discourse의 이 관행은 대부분의 댓글 시스템이 답변을 처리하는 방식과 일치하지 않습니다.)
- 사용자가 댓글에 직접 답변하거나, 댓글에 좋아요를 누르거나, 자신의 댓글을 수정하는 등의 기능을 허용하는 것
- Discourse에서 생성되어 외부 사이트에서 쉽게 렌더링하거나 상호작용할 수 없는 콘텐츠나 마크업을 포함할 수 있는 댓글을 처리하는 것. (예: 원박스, 투표 등)
- 최신, 가장 오래된, 최고 등 기준으로 댓글을 필터링하는 방법을 제공하는 것
이 모든 것은 외부 사이트의 서버에 과도한 부하를 주거나, Discourse에 너무 많은 API 요청을 하거나, 사용자 기기의 메모리를 너무 많이 사용하지 않으면서(목표는 가벼운 댓글 시스템을 만드는 것입니다) 달성되어야 합니다. 이는 달성 가능하지만, 기존 WP Discourse 코드를 대규모로 수정하지 않고 단순히 추가할 수 있는 것이 아닙니다.