현재 WordPress와 Discourse 간의 링크 방식은 모든 기사가 자동으로 숨김 상태로 Discourse로 전송되는 것입니다. 따라서 토론이 진행되지 않는 기사도 포함됩니다.
이는 WordPress가 많은 “빈” 주제를 생성하기 때문에 매우 리소스 집약적입니다.
토론이 시작된 기사만 WP에서 Discourse로 전송되도록 하는 해결책에 대해 의견을 주실 수 있나요?
현재 WordPress와 Discourse 간의 링크 방식은 모든 기사가 자동으로 숨김 상태로 Discourse로 전송되는 것입니다. 따라서 토론이 진행되지 않는 기사도 포함됩니다.
이는 WordPress가 많은 “빈” 주제를 생성하기 때문에 매우 리소스 집약적입니다.
토론이 시작된 기사만 WP에서 Discourse로 전송되도록 하는 해결책에 대해 의견을 주실 수 있나요?
Petr_Mišák 님,
이를 위해서는 WordPress에서 생성된 댓글이 Discourse의 게시물로 가져와져야 합니다. WP Discourse 플러그인을 사용하면 이것이 불가능하며, 가까운 미래에 지원될 가능성도 낮습니다. 이에 대한 더 넓은 관점의 의견은 아래 링크를 참고해 주세요.
그럼에도 불구하고, ActivityPub 플러그인에 Discourse 카테고리 액터가 다른 ActivityPub 액터를 팔로우할 수 있는 기능을 추가하는 작업(현재 진행 중)이 완료되면, WordPress ActivityPub 플러그인을 특정 방식으로 구성하여 이를 달성할 수 있을지 모르겠습니다. 다만 이는 매우 추측적인 이야기입니다.
또한, 왜 이것이 "리소스 집약적"이라고 보시는지에 대해 조금 더 이해하고 싶습니다. 상호작용(engagement)이 거의 없는 많은 기사를 게시하고 있다면, 상호작용이 더 발생할 가능성이 높은 기사 중 일부를 포럼에 게시하는 것을 고려해 보시는 건 어떨까요? 반대로, 답글이 없는 많은 내장된(embedded) 주제가 커뮤니티에 어떤 식으로 해가 되고 있다고 관찰하셨나요? 어쩌면 이 근본적인 문제를 해결하기 위해 할 수 있는 조치가 있을까요?
배경 설명을 위해 말씀드리면, 게시물이 많은 인기 있는 WordPress 사이트를 운영 중이시고, 최근 Discourse 포럼을 개설하여 웹사이트에 Discourse WordPress 플러그인을 추가하신 것으로 보입니다.
WordPress 사이트에 게시물이 얼마나 많으신가요? 오래된 게시물에도 댓글이 자주 달리나요, 아니면 보통 새로운 게시물에만 댓글을 달까요?
해결책에 관해 말씀드리면, WordPress 사이트에 커스텀 코드를 추가해야 하는 해결책도 고려하시나요, 아니면 커스텀 코드가 전혀 필요 없는 방법에만 관심이 있으신가요?
사이트의 게시물들이 보통 게시된 후 짧은 기간 동안만 댓글을 받는 경우, 가장 쉬운 해결책은 사이트의 가장 최근 게시물만 Discourse에 게시하기 시작하는 것입니다.
다음으로 쉬운 방법은 사이트에 플러그인을 추가하여 WP Discourse의 “토론 시작” 링크를 수정하는 것입니다. 이렇게 하면 해당 링크가 Discourse 주제(topic)로 연결되는 대신, WP Discourse 플러그인을 트리거하여 게시물을 Discourse에 게시하는 링크가 됩니다. 이를 구현하는 가장 까다로운 부분은 “토론 시작” 링크를 처음 클릭한 사용자를 어떻게 처리할지 결정하는 것입니다. 게시물이 게시된 후 사용자를 자동으로 해당 주제로 리다이렉트해야 하는지, 게시물이 게시되는 동안 사용자에게 무엇을 보여줄지 등입니다.
WordPress 커스텀 플러그인은 필요 없지만, 상당한 개발 비용이 들 수 있는 또 다른 가능한 해결책은 기존 사이트의 모든 게시물, 댓글, 사용자를 Discourse로 가져오는 가져오기(import) 스크립트를 작성하는 것입니다. 이렇게 하면 빈 주제(topic) 문제가 해결됩니다. 이 접근 방식을 채택한다면, WordPress 사이트를 Discourse 사이트의 DiscourseConnect 제공자(Provider)로 사용하는 것도 고려해 볼 가치가 있습니다. 그러면 가져온 사용자들이 Discourse에 쉽게 액세스할 수 있게 됩니다.
빈 주제는 많은 리소스를 소비하지 않습니다. 수만 개나 수십만 개를 말씀하시는 건가요?
내가 번역 오류를 일으킨 것일 수도 있지만, 나는 WordPress 댓글을 Discourse에 게시하는 것에는 관심이 없고, WordPress의 기사 주제에 대해 논의하기 위해 Discourse만 사용하길 원합니다.
이를 위해서는 WordPress 플러그인이 기사가 게시된 후에 각 게시된 기사에 대해 Discourse에 숨겨진 주제를 삽입해야 합니다.
WordPress 기사와 Discourse의 댓글 간의 링크가 누군가 주제에 대해 논의할 관심이 있을 때 생성되는 것이 아니라, 기사가 게시될 때 생성된다는 점이 매우 신경 쓰입니다.
모든 기사 중 댓글을 남기는 사람이 있는 경우는 10%에 불과하지만, WordPress 플러그인은 게시된 모든 기사에 대해 Discourse에 링크를 생성합니다. 따라서 이렇게 생성된 링크의 90%는 숨겨진 상태로 남아있을 뿐 아니라 불필요하게 리소스를 차지합니다.
우리는 매일 약 13개의 기사를 게시합니다. 따라서 13*365=4,745개의 기사가 연간 게시됩니다. 이 중 4,270개가 Discourse 시스템에서 숨겨진 주제로 설정되며, 어떤 댓글도 추가되지 않을 것입니다. 10년 동안 42,700개의 쓸모없는 주제가 생기는 셈입니다.
해결책은 WordPress에서 기사가 게시될 때 Discourse의 숨겨진 주제가 생성되지 않고, WordPress에서 기사 아래에서 누군가 댓글을 남길 관심을 보일 때만 주제가 생성되도록 하는 것입니다.
그러면 Discourse에서 숨겨지고 사용되지 않는 스레드를 생성할 필요가 없습니다.
말씀하신 대로 정확합니다. 저희는 방문객이 많은 WordPress 사이트를 운영하고 있지만, 사용자 계정, 로그인, 기사 댓글을 완전히 Discourse로 이전하고 있습니다. WordPress는 단순히 “DiscourseConnect 클라이언트” 역할만 하게 될 것입니다.
저희는 하루에 약 13개의 기사를 게시합니다 ![]()
사람들은 보통 새 기사에 댓글을 달지만, 오래된 기사에서 토론이 벌어지는 것도 드문 일이 아닙니다. 저희는 시간이 지나면서 여러 번 게시된 기사를 업데이트하려고 노력합니다. 그리고 기사에 새로 추가된 정보는 다시 한번 토론을 불태울 수 있습니다.
WordPress에 코드 조각을 추가하는 것은 기꺼이 수행할 수 있습니다.
현재 Discourse용 WordPress 플러그인을 사용하여 2023년 11월 1일 이후 게시된 기사만 Discourse에 추가할 계획이지만, 이렇게 하면 Discourse에서 수천 개의 미사용 토픽이 생성됩니다. 또한, 누군가가 2015년 기사에 댓글을 달고 싶어도 해당 토픽이 Discourse에 존재하지 않으므로 이를 수행할 방법이 없습니다.
사용자가 기사 아래에서 "토론 시작"을 클릭할 때만 토픽이 생성되면 좋겠습니다.
전체 프로세스가 어떻게 작동하는지 대략적으로 어떻게 상상하면 될까요? 예를 들어 가상의 시나리오를 들어 설명해 드리겠습니다.
그런 다음 누군가가 WordPress 기사 아래에 있는 “토론 시작” 버튼을 클릭합니다.
같은 WordPress 기사에서 누군가가 “댓글 추가”(다른 댓글)를 하려는 경우
JavaScript를 사용하면 누군가가 "토론 시작"을 클릭하고 첫 번째 댓글을 추가하려고 할 때만 Discourse에서 새로운 토픽이 생성됩니다.
아마도 저희가 전체 솔루션을 스스로 구축할 수 있지만, 현재 WordPress 개발자가 부족합니다. 또한 이 기능이 공식 Discourse 플러그인에 직접 포함되면 좋겠습니다.
우리의 경우, 10년 동안 약 50,000개의 주제가 될 것입니다.
그렇게 큰 문제는 아니지만, 몇 년 된 항목은 매년 한 번씩 정리해 두는 것도 좋습니다.
정리를 하는 것이 합리적일 수 있지만, 우리는 오래된 기사를 업데이트하고 게시 후 일정 시간이 지난 뒤 토론을 활성화하는 것을 목표로 합니다. 따라서 삭제는 우리 상황에서는 이상적인 해결책이 아닙니다. …
이 모든 내용은 특히 이전에 게시된 게시물에 대한 처리를 할 때 매우 타당해 보입니다. 제 유일한 우려는 커스텀 코드에 의존하게 되면 WordPress/Discourse 통합에 일부 복잡성이 추가된다는 점입니다. 그래도 괜찮을 것 같습니다. 개발자들이 WP Discourse 플러그인의 action과 filter 훅을 사용하고 코어 플러그인 코드를 직접 수정하지 않도록 확인해 주세요. “토론 시작” 링크가 클릭되었을 때 공개된 sync_to_discourse 메서드를 호출하는 방법을 파악해야 합니다: wp-discourse/lib/sso-client/sso-client-base.php at main · discourse/wp-discourse · GitHub. 해당 메서드를 통해 게시하면 WordPress 게시물에 필요한 모든 메타데이터가 올바르게 추가됩니다.
훌륭하네요! 이 Discourse 사이트를 참고해 보시는 것도 좋을 것 같습니다: Boing Boing | Substack. 이 사이트는 WordPress 플러그인을 사용하여 Discourse에 비슷한 수의 기사를 게시하고 있습니다. 그들의 경우, 모든 새 기사를 Discourse에 자동으로 게시합니다. Discourse 사이트를 설정하기 전에 WordPress에서 생성된 기존 기사들은 Discourse에 게시하지 않았습니다.
위에서 설명한 대로 Discourse용 WordPress 플러그인을 수정해 줄 개발자를 구할 수 있는 이 포럼의 적절한 게시판이 있을까요?
감사합니다, 정말 빠르셨어요. 처음에는 카테고리에서 찾아보려고 했는데 거기서 찾을 수가 없었어요. 좀 놀랐죠. 그래도 검색 덕분에 찾았네요.
자세한 답변을 주셔서 감사합니다, Petr. 다만 조금 혼란스럽습니다.
WordPress 댓글을 원하지 않고 Discourse에 이미 해당 기사의 토픽이 없는 상황에서, 누군가는 어떻게 기사에 대해 논의할 의사를 표현하나요?
*수정 아, UX를 설명해 주셨네요.
네, 꽤 실현 가능합니다.
이제 생각해보니, 이것이 플러그인의 작은 결함(lacuna)인 것 같습니다. 우리는 이를 더 쉽게 수행할 방법이 없습니다. 유틸리티 함수와 이를 연결하는 쇼트코드 및 블록을 추가하는 것이 합리적이라고 생각합니다. 현재 릴리스 이후의 릴리스를 위해 이 부분을 조사해 보겠습니다.
공식 WordPRess 플러그인에 Discourse 지원을 추가하는 것은 좋은 아이디어입니다. 이 새로운 기능이 어떤 플러그인 버전에서, 그리고 얼마나 걸릴지에 대한 대략적인 계획이 있을까요?
다음 주부터 2.5.1(다음 다음 릴리스)에 추가될 수 있도록 이 작업을 시작할 예정입니다. @Petr_Mišák 이 기능을 활용하면 목표 달성이 가능할 것입니다.
좋아요, 기대하고 있습니다. 이미 메인 사이트 https://www.svetandroida.cz/에 Discourse를 배포해 두었습니다.