토론 주제 표시 횟수를 discourse로 다시 동기화하는 방법

안녕하세요,

저는 WordPress에서 사용할 수 있도록 Discourse API를 활용한 VUE SPA를 개발했습니다. 사용자가 WordPress에서 특정 주제를 열 때, Discourse로 POST 요청을 보내 해당 주제의 조회수를 업데이트할 수 있는 방법이 있는지 궁금합니다.

알렉스, 안녕하세요.

이 부분에 대해 조금 더 알고 싶습니다. 공유해 주실 수 있는 내용이 있을까요?

WP Discourse 플러그인을 통해 가져온 게시물을 보는 것은 디스코urs에서 새로운 조회를 생성하지 않지만, topics_controller의 표준 show 엔드포인트를 사용하고 아래에 강조된 검사를 통과하면 "조회"가 추적됩니다. 참고로 API 키를 사용하면 current_user가 있게 됩니다.

참고

해당 코드를 읽을 때 주의할 점이 하나 있습니다. TopicView는 실제로 우리가 찾고 있는 대상이 아닙니다(토픽이 표시될 때 직렬화되는 데이터를 처리하는 모델입니다). 실제 “토픽 조회” 모델은 TopicViewItem입니다.

안녕하세요 @angus,

소중한 의견 감사합니다. 토픽 뷰 관련 코드베이스를 살펴볼 예정입니다.

SPA 앱에 관하여:

처음에는 WordPress에 포럼 플러그인을 사용했는데, 해당 플러그인이 질문과 답변, 카테고리 및 태그를 위한 자체적인 게시물 유형(post type)을 생성했습니다. WP Discourse 플러그인을 통해 SSO를 설정하면서, Discourse의 Webhooks를 활성화하여 해당 게시물 유형으로 토픽을 WordPress에 동기화하고, 답변에는 임베딩(embedding)을 사용했습니다.

이 시점에서 포럼 프론트엔드는 지루했는데, 각 질문 항목이 WP 데이터에만 의존하여 제목과 작성자만 표시할 수 있었기 때문입니다. 저는 작성자, 조회 수, 좋아요 및 답변 상태도 함께 표시하고 싶었습니다. 해당 플러그인을 수정하는 것은 합리적이지 않다고 판단했습니다.

SPA를 사용하면 데이터를 가져와서 표시하는 속도가 훨씬 빠르고 유연할 것입니다. 페이지네이션이 적용된 최신 토픽 목록을 표시하고, 필터/검색 기능이 포함된 상위 토픽 사이드바를 제공합니다.

처음에는 토픽 상세 뷰에서 답변/댓글 표시도 처리하고 싶었습니다. 그런데 어떤 이유에서인지, 임베딩된 댓글에서는 본명 대신 작성자의 사용자명이 표시되었습니다(관련 링크).

또한 이모지 및 기타 자산이 Discourse 사이트 기준으로 상대 경로(relative path)를 사용하고 있어 문제가 발생했기 때문에, 결국 임베딩 방식을 유지하기로 했습니다.

또 다른 문제는 SEO였는데, WordPress의 wp_head 훅을 사용하여 이를 처리할 수 있었습니다.