Discourse 댓글을 기본 위치가 아닌 다른 곳에 배치하는 방법?

WordPress 사이트를 커스터마이징 중인데, 특정 게시물에 대한 Discourse 스레드 링크를 HTML의 원하는 위치에 넣고 싶습니다.

(세부 사항: LearnDash 코스 사이트를 커스터마이징하고 있으며, LearnDash의 "집중 모드"는 댓글을 포함한 대부분의 표준 WordPress 레이아웃 요소를 제거합니다. 특정 레슨에 대한 포럼 링크를 삽입하기 위해 LearnDash 훅 중 하나를 사용하려고 합니다.)

“스레드 링크” 마크업을 출력할 수 있는 wp-discourse 코드를 알려주실 수 있는 분 계신가요?

감사합니다!

https://meta.discourse.org/t/wp-discourse-plugin-tips-and-tricks/50757의 “Timber 테마로 댓글 템플릿 표시하기” 섹션을 확인해 보세요.

감사합니다… 하지만 그 정보가 조금 오래된 것 같습니다. 참조된 경로:

 WPDISCOURSE_PATH . 'templates/comments.php'

…제 wp-discourse 설치 환경의 어떤 경로와도 일치하지 않는 것 같습니다.

디스커스 댓글 목록을 로드할 필요조차 없어요. 디스커스 스레드 링크만 있으면 충분합니다. 하지만 wp-discourse 코드를 이용해 해당 링크를 가져오는 방법을 모르겠어요 :-/

결국 WP-Discourse 코드를 전혀 사용하지 않고 postmeta만 참조하는 방식으로 처리했습니다.

댓글 목록을 표시하는 기능은 어떻게 해도 작동하지 않았습니다… 찾을 수 있는 모든 함수들이 {placeholders}가 가득한 HTML을 반환하려는 것 같네요 :confused:

    $discuss_url = get_post_meta($post_id, 'discourse_permalink', true);
    $comment_count = get_post_meta($post_id, 'discourse_comments_count', true);
    if($discuss_url) {
        ?>
            <div class="lac-lesson-discuss">
                <a href="<?php echo $discuss_url ?>" target="lac_discuss">
                    💬 이 주제에 대해 토론하세요! (<?php echo $comment_count ?>개의 댓글)
                </a>
            </div>
        <?php
    }

와, 마지막 게시글 이후로 7년이 지났네요. @avdi님, 다시 오신 걸 환영합니다! 아마 @simon님이 내일 조언해 주실 수 있을 거예요.

맞습니다. 그 방식은 더 이상 작동하지 않습니다. WordPress의 댓글 영역 밖에서 댓글을 표시하는 것이 더 쉽도록 플러그인에 헬퍼 함수를 추가할 수 있을 것 같습니다. 앞으로 며칠 안에 플러그인을 소폭 업데이트해야 하는데, 업데이트에 display_discourse_comments 함수를 추가하는 것을 시도해 보겠습니다. 준비되는 대로 알려드리겠습니다.

플러그인에 정적 헬퍼 함수를 추가했습니다. 이 함수를 사용하면 Discourse 댓글 템플릿을 로드하지 않고도 댓글을 표시할 수 있습니다. 해당 함수는 여기 있습니다: get_discourse_comments. 댓글을 표시할 WordPress 게시물의 post_id를 제공해야 합니다. 사용 예시는 다음과 같습니다:

<?php
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments( 859 );
echo $discourse_comments;

이 함수는 플러그인의 댓글 설정 탭에서 ‘Discourse 댓글 활성화/댓글 표시’ 옵션을 선택했을 때와 동일한 방식으로 댓글을 표시합니다. 이 함수가 사용되면 해당 설정의 값은 무시되지만, 해당 페이지의 다른 모든 설정은 그대로 적용됩니다.