Discourse가 게시물 아래 댓글을 자동으로 연결하지 않음

안녕하세요!
현재 제 블로그에서 Discourse가 내 글 아래에 댓글을 더 이상 표시하지 않는 문제가 있습니다. 내 글이 게시되면 블로그의 Discourse 포럼에 표시되긴 하지만, 그 후 WordPress 글에서 수동으로 링크를 걸어야 합니다. 그렇게 해야만 댓글이 표시됩니다. 하지만 이전에는 그런 단계가 필요하지 않았습니다.

이미 이 문제에 대해 여기에서 작성한 적이 있습니다: 422 Unprocessable Content response when using ActivityPub with WP Discourse - #5 by Miasanrot

불행히도 그 곳의 해결책은 제 문제를 해결해 주지 않았고, 매우 개별적인 문제인 것 같습니다. 그래서 새로운 스레드를 열었습니다. 요청받은 공개할 세 가지 항목은 다음과 같습니다:

  1. WP Discourse 로그 (메타 파일 포함).
  2. Discourse 로그, 특히 에러 로그.
  3. Discourse에서 사용하는 플러그인 목록.

WP Discourse 로그 파일:
이것은 오늘 날짜의 로그입니다:

[2024-03-14 06:02:59] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13514,"http_code":403} 
[2024-03-14 07:14:26] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13651,"http_code":403} 
[2024-03-14 08:22:19] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13815,"http_code":403} 
[2024-03-14 08:48:21] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13638,"http_code":403} 
[2024-03-14 09:37:36] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13759,"http_code":403} 
[2024-03-14 10:55:34] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13603,"http_code":403} 
[2024-03-14 11:25:23] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13603,"http_code":403} 
[2024-03-14 12:36:28] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13944,"http_code":403} 
[2024-03-14 16:03:01] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13977,"http_code":403}

**메타 파일에 포함된 내용:**

### 서버 ###

WordPress - 6.4.3
PHP - 8.0.26
MySQL - 8.0.30

### 활성화된 플러그인 ###

Admin Columns for ACF Fields - 0.3.1
Akismet Anti-spam: Spam Protection - 5.3.1
Borlabs Cookie - Cookie Opt-in - 2.2.67
Contact Form 7 - 5.8.6
Genesis Blocks - 3.1.1
LightStart - Maintenance Mode, Coming Soon and Landing Page Builder - 2.6.9
Podigee Wordpress Quick Publish – now with Gutenberg support! - 1.3.5
Proxy Real IP - 1.1
Shariff Wrapper - 4.6.9
TablePress - 2.2.5
TablePress Extension: Responsive Tables - 1.1
Theme Test Drive - 2.9.1
User Role Editor - 4.64.1
WP-Discourse - 2.5.1
WP Import Export - 3.9.26

### WP Discourse 설정 (비밀 정보 제외) ###

display-subcategories - 0
allow-tags - 0
max-tags - 5
publish-as-unlisted - 0
full-post-content - 0
custom-excerpt-length - 50
add-featured-link - 0
auto-publish - 1
force-publish - 0
force-publish-max-age - 5
publish-failure-notice - 1
auto-track - 1
allowed_post_types - post
exclude_tags - 
hide-discourse-name-field - 0
discourse-username-editable - 1
direct-db-publication-flags - 0
verbose-publication-logs - 0
enable-discourse-comments - 1
comment-type - display-comments
ajax-load - 1
load-comment-css - 1
discourse-new-tab - 1
hide-wordpress-comments - 1
show-existing-comments - 1
max-comments - 50
min-replies - 1
min-score - 0
min-trust-level - 0
bypass-trust-level-score - 50
only-show-moderator-liked - 0
custom-datetime-format - 
cache-html - 1
clear-cached-comment-html - 0
verbose-comment-logs - 0
use-discourse-webhook - 1
webhook-match-old-topics - 0
use-discourse-user-webhook - 0
webhook-match-user-email - 0
enable-sso - 0
auto-create-sso-user - 0
real-name-as-discourse-name - 0
force-avatar-update - 0
redirect-without-login - 0
sso-client-enabled - 0
sso-client-login-form-change - 0
sso-client-sync-by-email - 0
sso-client-sync-logout - 0
logs-enabled - 1

Discourse 에러 로그에서 무언가를 다운로드하거나 복사하는 방법을 모르지만, 이것은 오늘 찍은 스크린샷입니다. 오후 4시 06분은 우리 최신 기사가 게시된 시간(오후 4시 11분)과 거의 같습니다.

Discourse의 플러그인 목록:

Chat (비활성화됨), Data Explorer, Footnote, Spoiler Alert

추가해야 할 사항이 있다면 알려주세요. 도움 주셔서 미리 감사합니다.

Hey @Miasanrot, 이렇게 자세한 정보를 주셔서 감사합니다. 정말 감사드립니다!

여기서 먼저 조사해야 할 사항은 로그에 표시된 403 댓글 동기화 오류입니다. 이는 댓글이 표시되지 않는 문제와 관련이 있어 보입니다. 403 오류는 WP Discourse가 Discourse에 접근할 수 없음을 의미하며, 이는 일반적으로 인증 실패로 인해 발생합니다.

  1. WP Discourse 관리 패널의 “Connection” 탭에서 "You are connected to Discourse!"라는 메시지가 표시됩니까?

  2. “Proxy Real IP - 1.1” WordPress 플러그인을 사용 중이므로, WordPress와 Discourse의 네트워크 환경에 대해 궁금합니다. 해당 플러그인은 어떤 역할을 하고 있습니까?

빠른 답변 감사합니다! 저도 정말 감사하게 생각합니다.

네, 제가 연결되어 있다는 것을 표시합니다. 또한 기사를 게시할 때 무언가를 생성하는 것처럼 보입니다. WP에서는 가끔 해당 이미지가 이미 임베드되어 있다는 오류가 표시됩니다(제가 링크한 스레드에서 다른 사용자가 겪은 문제와 동일한 것 같습니다). 그래서 저도 연결이 되어야 한다고 생각합니다(제가 쓴 것처럼 관리자 패널에서도 확인됩니다).

두 번째는 조금 더 어렵습니다. 저는 1월에 이 블로그를 인수했기 때문에 모든 것을 제가 직접 설정하지 않았습니다. 하지만 이전 관리자에게 해당 플러그인에 대해 물어보았고, 답변을 받는 대로 다시 알려드리겠습니다.

수정: 그는 플러그인을 비활성화할 수 있다고 했습니다. 그래서 다음 단계로 그것을 시도해 볼 수 있을까요?

아쉽게도 아직 해결책이 없습니다. 위에서 언급한 플러그인을 비활성화해도 도움이 되지 않았습니다.

저스틴, 죄송합니다. 이 문제를 놓치고 있었습니다. 이 문제는 아마도 사용자의 WordPress 설정과 관련된 특정 문제일 가능성이 큽니다.

(강조는 제 것입니다)

언제부터 작동이 멈췄나요? 코멘트가 작동하지 않게 되었을 때 WordPress에서 변경된 사항을 식별할 수 있나요?

  1. WordPress를 업데이트했나요?
  2. 플러그인을 업데이트했나요?
  3. 테마가 변경되었거나(또는 업데이트되었나요)?

저스틴, 잠깐 확인하려고 들어왔어. 이 이슈 진행은 어떻게 돼?

다시 확인해 주셔서 감사합니다!

정확히 답하기는 어렵지만, 워드프레스(그리고 php, 둘 다 같은 날) 업데이트가 모든 문제가 시작된 시점일 수 있다고 생각합니다. 적어도 그 직후에 해당 문제를 처음 발견했거든요. 저는 두 번째로 최신 버전인 워드프레스를 사용 중입니다(최근 며칠 사이에 6.5 버전이 출시되었는데 아직 설치하지 않았습니다) 그리고 정확히 알고 있지는 않지만 php 7.4를 사용 중인 것 같습니다.

디스코스(Disourse) 플러그인은 2.5.1 버전으로 실행 중입니다.

워드프레스를 어떤 버전에서 업그레이드했는지 혹시 알고 계신가요? 업그레이드 사이에 얼마나 오랜 기간이 있었나요? 또한 테마도 같은 시점에 업데이트하셨나요? 사용 중인 테마가 "블록 테마"인가요?

오해나 잘못된 정보 없이 답변드릴 수 있기를 바랍니다. 저는 1월에 이 블로그를 인수했고, 당시 WordPress 버전은 꽤 오래된 5.x 계열이었습니다. 정확한 버전 번호는 말씀드리기 어렵습니다. 두 업데이트 사이에 상당한 시간이 흘렀습니다. 저희 테마는 여전히 동일하며, 저희 페이지를 위해 특별히 설계되고 코딩된 개별 테마입니다. 코딩 기술이 부족하지만, 페이지를 업데이트할 때 문제가 발생할 수 있다는 점은 알고 있었습니다. 하지만 이 디스커스(토론) 관련 문제를 발견하기 전까지는 아무런 문제가 없는 것처럼 보였습니다.

더 자세한 정보를 드리지 못해 죄송합니다. 최선을 다해 답변드리겠습니다 :smiley:

인내와 도움을 주셔서 다시 한번 감사드립니다.

알겠습니다. 이는 상당한 업그레이드입니다(예: WordPress 5.x에서 6.x로). 기본 WordPress 테마(어떤 기본 테마든)를 사용해 테스트해 보고 동일한 문제가 발생하는지 확인해 주실 수 있을까요? 다소 번거롭겠지만, 여기서는 테마가 가장 유력한 원인입니다. 댓글 블록(Comments Block)으로 전환해야 할 수도 있습니다.

가능할 것 같습니다. 오늘 늦게 기사를 발행한 후, 직전에 WP 테마를 전환해서 작동하는지 확인해 볼 수 있습니다.

아, 그리고 @angus 님께 추가 질문이 있습니다. '블록 테마’가 정확히 무엇을 의미하는지 궁금합니다. 페이지나 기사 같은 콘텐츠에는 WP의 블록 에디터를 사용 중인데, 블록 테마가 원하는 대로 블록을 추가해서 페이지를 디자인할 수 있다는 뜻이라면, 제 경우는 블록 테마가 아닙니다. 명확히 하고 싶어서 질문드립니다.

그래서 저는 워드프레스 테마를 'Twenty Twenty-Three’로 변경한 뒤 기사를 게시했습니다. 평소처럼 Discourse에 스레드가 생성되었지만, 이전과 마찬가지로 블로그의 댓글 섹션과 연결되지 않아 수동으로 연결해야 했습니다.

알겠습니다. 귀하의 사이트에서 무언가가 플러그인이 정상적으로 작동하는 것을 방해하고 있습니다. 테마가 원인이 아니라면, 다음으로 확인해야 할 곳은 설치된 다른 플러그인입니다.

귀하의 사이트에 대해 더 많은 정보를 파악할 수 없는 상황에서 제가 드릴 수 있는 유일한 조언은, 플러그인을 하나씩 비활성화해 보며 동작이 변화하는지 확인해 보라는 것입니다. 그중 하나가 현재 버전의 Wordpress 또는 PHP 8.x(또는 둘 다)와 호환되지 않을 가능성이 있습니다. (WP Discourse 플러그인은 이 두 가지 모두와 호환됩니다.)

다시 한번 말씀드리지만, 원하시는 답변이 아닐 수 있지만, Wordpress와 같은 플러그인 기반 시스템에서는 이러한 문제(즉, 플러그인 충돌)가 오류의 원인이 될 수 있습니다. 이 시점에서는 해당 원인을 제거하는 것이 가치가 있습니다.

캐시를 테마와 함께 사용하는 것이 어떤 식으로든 이 문제와 관련이 있을 수 있을까요? 이 부분에 대해서는 잘 모르지만, 가끔씩 페이지에 일부 요소가 표시되지 않다가 캐시를 삭제하면 다시 정상 작동하는 경우가 있습니다. 예를 들어, 어제 수동으로 기사를 링크했는데도 댓글이 페이지에 표시되지 않았습니다. 캐시를 삭제하니 해결되었습니다.

오늘 기사를 게시했는데, discourse와 자동으로 링크가 잘되었습니다. 하지만 댓글이 표시되지 않았습니다. 그래서 다시 캐시를 삭제했는데, 그때서야 댓글이 보였습니다. 제 입장에서는 이해하기가 쉽지 않지만, 어딘가에는 문제가 있는 것 같습니다.

네, 캐싱이 문제의 원인이 될 수 있습니다. WP Discourse 설정의 “댓글” 탭에서 “Ajax로 댓글 로드” 설정을 사용해 보세요.

어떤 캐싱 솔루션을 사용 중이신가요?

옵션이 활성화되었습니다.

캐싱을 위해 WP Rocket을 사용 중이지만, 일부 문제를 발견한 후에 설치했습니다. 이 문제들은 해결된 것으로 보였습니다. 하지만 캐싱이 이전에는 정확히 어떻게 작동했는지는 확실히 말씀드리기 어렵습니다. 캐싱이 있었다는 것은 알지만, 구체적인 솔루션은 알지 못합니다. 블로그를 인수했을 때 이미지가 느리게 로드되는 느낌이었습니다. WP Rocket을 사용한 후 1~2개월 동안은 상황이 나아진 것 같습니다. (댓글 문제는 WP Rocket을 설치하기 전에 이미 존재하고 있었습니다.)

하지만 드물게 페이지에 일부 내용이 잘못 표시되는 문제가 발생합니다. 지난 주에는 discourse에 수동으로 연결한 후 댓글이 표시되지 않는 문제가 있었습니다. 그래서 WP Rocket으로 캐시를 삭제했고, 그제서야 다시 정상적으로 작동했습니다.

422 오류와 관련해서 나와 비슷한 문제를 겪고 있는 것 같습니다. @angus 와 이미 테스트를 위해 테스트 환경(WP와 Discourse)을 설정할 것이라고 이야기했고, hopefully 이번 주말에 가능할 것 같습니다…

WP Rocket은 정말 골칫거리가 될 수 있습니다. 이 도구는 콘텐츠의 정적 사본을 생성하지만, 동적으로 처리되어야 하거나 매우 짧은 시간만 정적으로 유지되어야 하는 부분을 건드리지 않으려 합니다. 댓글에서 캐싱을 신뢰할 수 있게 비활성화하는 규칙을 운 좋게 찾으면 작동은 하지만, 그렇게 되면 원래 얻으려 했던 이점을 잃게 됩니다.

캐싱 측면에서 WordPress는… 정확히 악몽은 아니지만, 악몽에 가까운 수준입니다. WP Rocket은 너무 많은 주의와 제 시간을 요구해서 제거했는데, 이 도구는 상당히 짧은 TTL(유효 시간)과 함께 사용할 때 가장 잘 작동합니다. 다른 도구를 사용하면 더 좋은 결과를 얻을 수 있었습니다(그리고 현실적으로 생각해야 합니다: 제 업무 시간을 매주 몇 시간씩 거의 매주 소비하면서 단 1초를 줄이려고 하는 것이 정말로 합리적인가? 불필요한 플러그인을 비활성화하고 올바른 테마를 선택하는 것이 더 나은 선택입니다).

대부분의 사이트는 실제로 댓글 기능이 필요하지 않습니다. 댓글이 거의 달리지 않기 때문이죠. 그리고 Discourse를 댓글 섹션으로 사용하는 것은 다른 목적을 위해 존재합니다. 물론 상황에 따라 다릅니다.

제 경우, Discourse로의 연결은 일종의 광고 역할을 합니다. 하지만 제 방문객의 대부분은 모바일 기기를 사용하며, 거의 항상 페이지를 충분히 아래로 스크롤하지 않습니다. 사이드바에 대한 의문점과 정확히 같은 문제입니다.

그럼 어떤 도구들이죠? 다시 한번 말씀드리지만, 저는 이런 기술적인 부분에 익숙하지 않아서 이 문제에 대한 도움이 있는지 확인하려고 여기에 온 것입니다. 이 문제는 WP Rocket을 설치하기 전에 이미 존재했고, WP Rocket은 다른 유형의 문제들을 일부 해결해 주었습니다. 하지만 이 도구가 어떤 식으로든 문제를 일으키고 있다면, 다른 해결책도 열어두고 있습니다.

우리의 기사 아래에는 (정확히 말하면 Discourse 내에서) 최대 100개에서 200개까지의 댓글이 달립니다. 따라서 기사의 내용을 읽고 싶은 사용자만 있어도 아래로 스크롤해서 댓글을 볼 수 있도록 통합되어 있어야 한다고 보는 것이 타당합니다.

이 포럼에서는 범주 밖의 주제입니다. 왜냐하면 WordPress 튜닝에 관한 문제이기 때문입니다. Facebook이나 WordPress 속도를 높이는 것과 같은 다른 커뮤니티를 찾아보시는 것이 좋습니다.

다만, 동시 접속자가 많다면 Asset CleanUp, EWWW Image Optimizer 또는 Redis와 같은 플러그인에 관심이 있으실 수 있습니다. Nginx 도구를 사용하여 가능한 한 많은 봇 트래픽을 차단해야 합니다. 하지만 실제 병목 현상이 테마와 수많은 다양한 플러그인에서 발생한다면, 위 도구들은 큰 도움이 되지 못할 수 있습니다. 그리고 안타깝게도 데이터베이스 자체를 주기적으로 정리해야 합니다.

WP Rocket이 도움이 된다면 좋겠지만, 캐싱 시간을 너무 길게 설정하지 마세요. 또한 Discourse를 캐시에서 반드시 블랙리스트에 등록해야 합니다.