Discourse를 WordPress의 댓글 시스템으로 사용할 수 있습니다. 댓글 기능은 게시 기능에 의존하므로, 댓글이 작동하려면 게시 기능이 설정되어 있어야 합니다. 게시 설정을 완료했고 이제 댓글 설정을 준비했다면, 아래 짧은 영상을 시청하거나 아래 지침을 따르세요.
다음 단계
댓글 설정을 완료한 후, 다음 주제들을 살펴보는 것이 좋습니다.
지침
댓글 설정하기
Discourse 댓글이 WordPress 사이트에 표시되려면 Enable Discourse Comments(Discourse 댓글 활성화) 설정을 선택해야 합니다. 활성화되면 두 가지 옵션이 나타납니다. Display comments(댓글 표시) 옵션은 Discourse에 게시된 각 WordPress 게시물에 대해 댓글 템플릿을 로드합니다. 이 템플릿은 WordPress 게시물 아래에 Discourse 댓글을 표시합니다. Display a link to the comments(댓글로 연결되는 링크 표시) 옵션은 게시된 게시물 아래에 관련 Discourse 주제로 연결되는 링크를 표시하는 댓글 템플릿을 로드합니다. 링크에는 해당 주제에 대한 답변 수가 표시되지만, WordPress에는 답변 내용이 표시되지 않습니다.
이 두 가지 댓글 옵션 모두 WordPress 게시물에 대해 댓글 템플릿을 로드하는 방식으로 작동합니다. 이는 댓글이 게시물에 대해 활성화된 경우에만 작동한다는 것을 의미합니다. 모든 게시물에 대해 댓글을 활성화하되, Discourse에 게시되지 않은 게시물에 대해 과거의 WordPress 댓글은 표시하고 싶지 않다면 Remove WordPress Comments Template(WordPress 댓글 템플릿 제거) 설정을 활성화하세요.
설정
다른 댓글 설정들이 어떤 기능을 하는지에 대한 간단한 설명을 드립니다. 여전히 어떤 설정이 궁금하다면 이 주제에 답변을 남기고 추가 설명을 요청하세요.
Ajax로 댓글 로드
이 설정은 서버에서 로드하는 대신 WordPress 클라이언트에서 댓글을 로드하는 데 사용됩니다. 페이지 캐싱이 최신 댓글의 로드를 방해하고 있는 경우 유용합니다.
댓글 CSS 로드
이 설정은 WordPress에서 Discourse oneboxes와 인용문이 표시될 때 발생하는 문제를 수정하는 스타일시트를 로드합니다.
기존 WP 댓글 표시
이 설정을 선택하면 Discourse에 게시된 게시물에 대해 기존 WordPress 댓글도 함께 표시됩니다. 설정을 선택하세요.
기존 댓글 제목
기존 댓글을 표시하는 경우, 이 설정은 WordPress 댓글 위에 제목을 추가합니다.
선택적 가져오기 설정
댓글을 선택적으로 가져올 수 있도록 허용하는 여러 설정이 있습니다. 이들은 스스로 설명이 충분할 것입니다. 각 설정의 기본 값은 좋은 시작점이므로, 변경할 이유가 있는 경우에만 변경하세요.
- Max Visible Comments (표시할 최대 댓글 수)
- Min Number of Replies (최소 답변 수)
- Min Score of Posts (게시물 최소 점수)
- Min Trust Level (최소 신뢰 수준)
- Bypass Trust Level Score (신뢰 수준 점수 우회)
- Only Import Moderator-Liked (모더레이터가 좋아요한 것만 가져오기)
사용자 지정 날짜/시간 형식
이 설정은 WordPress 사이트에 표시되는 각 Discourse 댓글의 날짜 형식을 지정합니다. 기본 값으로 시작하세요. 날짜 형식을 변경하고 싶다면, 설정 설명의 링크를 클릭하여 방법에 대한 세부 정보를 확인하세요.
댓글 HTML 캐싱
이 설정은 성능을 향상시키는 데 사용할 수 있습니다. 댓글 HTML을 캐싱하면 Discourse로 전송되는 요청의 수를 줄일 수 있습니다. 관련 설정인 Clear Cached Comment HTML(캐시된 댓글 HTML 지우기)은 스스로 설명이 충분할 것입니다.
상세 댓글 로그
이를 활성화하면 오류(기본값) 외에도 Discourse에서 댓글을 성공적으로 가져온 모든 기록을 로그로 남깁니다.
댓글 데이터 동기화 Webhook
“Webhooks” 설정 패널에서 Sync Comment Data 웹훅을 활성화하면 WordPress에서 Discourse로 전송되는 API 요청의 수를 크게 줄일 수 있습니다. 웹훅을 활성화하기 전에
-
설정 설명에 제공된 Discourse URL(
http://forum.example.com/admin/api/web_hooks)을 방문하세요. -
‘New Webhook’ 버튼을 클릭하고 양식을 작성하세요.
-
Payload URL 필드에 WP Discourse
Sync Comment Data필드의 설명에 제공된 URL을 입력하세요. 이는 다음과 같은 형태가 될 것입니다(단, WordPress 사이트의 URL을 사용합니다):https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content. -
Content Type 필드가
application/json으로 설정되어 있는지 확인하세요. -
Secret 입력란에 최소 12자 이상의 문자열을 입력하세요. 그런 다음 이 동일한 키를 WP Discourse
Webhook Secret Key설정에 복사하세요. -
‘Which events should trigger this webhook?’ 상자에서 'Post Event’가 선택되어 있는지 확인하세요.
-
WordPress에서 특정 카테고리만 게시물을 게시하는 경우 Triggered Categories 필드를 사용하세요. 이렇게 하면 WordPress 사이트가 관련 Discourse 게시물이 없는 주제에 대한 웹훅 요청을 처리할 필요가 없어집니다.
-
Check TLS certificate of payload url 설정을 활성화된 상태로 두세요.
마지막으로, ‘Active’ 체크박스를 활성화하고 create를 클릭하세요. 웹훅이 저장되면 Go to events 버튼을 클릭하세요.
-
-
WordPress로 돌아와서 Discourse의 웹훅 시크릿을
Webhook Secret Key필드에 입력했는지 확인하고Sync Comment Data웹훅 설정을 활성화하세요. 그런 다음 옵션을 저장하세요.
이제 Discourse 웹훅이 작동해야 합니다. Discourse에서 웹훅의 Ping 버튼을 클릭하여 확인해야 합니다(/admin/api/web_hooks/:webhook_id/events에서 찾을 수 있음). 웹훅을 핑했을 때 상태 코드 200이 반환되는지 확인하세요.
WordPress 아카이브 페이지의 comments_number 동기화 주기 조정
게시물에 대한 정확한 Discourse 댓글 수를 얻으려면 플러그인은 현재 댓글 수를 가져오기 위해 주기적으로 Discourse에 HTTP 요청을 해야 합니다. 단일 페이지의 경우 이 주기는 10분을 초과하지 않도록 설정됩니다. 아카이브 페이지의 경우 주기는 24시간을 초과하지 않도록 설정됩니다. 이는 아카이브 페이지에 접근할 때마다 Discourse에 여러 요청을 보내는 것을 피하기 위한 것입니다.
사이트의 아카이브 페이지를 표시할 때 플러그인이 Discourse에 너무 많은 요청을 보내고 있다고 판단되면, 'discourse_archive_page_sync_period' 필터에 연결하여 archive_page_sync_period를 조정할 수 있습니다. 이를 수행하려면 테마의 functions.php 파일에 다음과 같은 코드를 추가하세요:
add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
// This will change to sync_period for archived posts to once a week.
return WEEK_IN_SECONDS;
}
아카이브 페이지의 현재 댓글 수를 가져오기 위해 플러그인이 Discourse에 충분한 요청을 하지 않는다고 판단되면, 테마의 functions.php 파일에 다음과 같은 코드를 추가할 수 있습니다. 이는 archive_page_sync_period를 10분으로 설정합니다.
참고: 분주한 사이트에서는 서버에 큰 부하를 줄 수 있습니다.
add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
// This will change to sync_period for archived posts to once a week.
return 10 * MINUTE_IN_SECONDS;
}
WordPress 댓글 템플릿을 로드하지 않고 댓글 표시
WP Discourse 플러그인은 WordPress 댓글 템플릿을 사용하여 Discourse 댓글을 로드합니다. 테마가 댓글 템플릿을 로드하지 않는 경우, 정적 get_discourse_comments 헬퍼 함수를 사용하여 댓글을 표시할 수 있습니다. 이 함수에는 댓글을 표시하려는 WordPress 게시물의 id를 제공해야 합니다. 사용 예시는 다음과 같습니다:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments(859);
echo $discourse_comments;
댓글은 Enable Discourse Comments/Display Comments 옵션(플러그인의 Comment Settings 탭에서 찾을 수 있음)을 선택했을 때와 동일한 방식으로 표시됩니다. 이 함수가 사용되면 해당 설정의 값은 무시되지만, 다른 모든 댓글 설정은 준수됩니다.
문제 해결
Discourse 댓글의 가장 흔한 문제는 Discourse에서 게시물이 작성된 직후에는 즉시 표시되지 않을 수 있다는 것입니다. 이 지연은 의도적인 것으로, 플러그인은 Discourse에 필요한 요청의 수를 줄이려 시도합니다. 페이지가 로드될 때마다 요청을 보내면 사이트가 느려집니다. 댓글이 즉시 표시되지 않으면 페이지를 새로 고침하기 전에 10분을 기다리세요.
Discourse와 WordPress 댓글을 모두 표시할 때 댓글 수 관련 문제
wp-discourse 플러그인은 WordPress의 get_comments_number 필터 후크를 사용하여 게시물을 위해 생성된 Discourse 댓글의 수가 테마 전체에 표시되도록 합니다. 이는 게시물에 대해 Discourse와 WordPress 댓글이 모두 표시될 때 충돌을 일으킵니다. 플러그인은 대부분의 곳에서 이 충돌을 해결할 수 있습니다. 해결할 수 없는 한 가지 장소는 WordPress 테마가 댓글 섹션의 상단에 자주 표시하는 댓글 제목입니다. 이는 "2 thoughts on…"와 같은 내용으로 시작되는 섹션입니다.
가장 쉬운 방법은 테마의 css 파일에 규칙을 추가하는 것입니다.
.discourse-comments-area ~ .comments-area .comments-title {
display: none;
}





