[연재] Comments Evolved plugin에서 댓글 수를 합산하는 방법(1)

          Comments Evolved 은 여러 종류의 댓글을 동시에 적용할 수 있는 유용한 도구이지만 그 동안 댓글 수의 총합을 표시하는 방법을 알지 못했다.  예전 글에서  잠시 언급한 바 있었지만 나중에 테스트 한 결과는 전혀 달라서 오랫 동안 이 문제를 해결하기 위해 고심해왔다.  물론 .org의 plugin 사이트에서도 올바른 방법을 발견할 수 없었고 이것에 관해 누군가 질문을 올렸지만 지금까지도  답이 없는 상태이다.

오늘 그 해결방법의 일부에 관해서 기록한다.

     gplus-comments/includes/lib/ 디렉토리에 있는 frontend.php 파일에서 21 line에 가면 댓글 수의 총합을 구하는 함수 식이 있다.

 

function comments_evolved_get_total_count() {
  $total_count = 0;
  $wordpress_count = comments_evolved_get_wordpress_count();
  //$wordpress_count = get_comments_number();
  $gplus_count = comments_evolved_get_gplus_count();
  $trackback_count = comments_evolved_get_trackback_count();
  $facebook_count = comments_evolved_get_facebook_count();
  $disqus_count = comments_evolved_get_disqus_count();
  $total_count = $total_count + $wordpress_count + $gplus_count + $trackback_count + $facebook_count + $disqus_count;
  return $total_count;
}
//add_filter('get_comments_number', 'comments_evolved_get_total_count', 4269);

     그 함수가 끝나는 지점에는 워드프레스 댓글 수를 가져오는 함수 ( get_ comments_ number )  대신에 앞에서 정의한 함수를 대체하라는 명령이 (  ‘//'  이런 코드로) 주석 처리된 것을 찾을 수 있다.  이 주석처리를 지우면 테마에서 댓글 수를 인식하는 모든 코드(get_comments_number)는 일단 위에서 정의된 함수로 대체된다. ( 문장 끝 부분의 숫자 ‘4269' 는 명령 수행 우선순위를 나타내는 것으로써 작을 수록 우선 순위가 높다.    너무 크면 접속 속도에 지장을 줄 수도 있으므로 오류가 나지않는 범위내에서 작게 줄여 주는 것이 좋을 것 같다. 서버의 상태에 따라서도 달라질 수 있으므로 나중에 라도 다시 이상이 있으면 변화를 주어 가면서 이상 유무를 확인해보는 것도 나쁘지 않을 것 같다.)

다만  댓글의 종류에 따라서 다양한 반응이 나타난다.

1)  facebook 댓글의 경우

    암호화 통신( ssl) 을 지원하지 않으면  페이스북 댓글 수를 넘겨받는 함수가 활성화되지 않기 때문에 facebook 댓글 수는 합산되지 않는다. 이러한 내용은 브라우저의 debugging mode인 콘솔 탭에서도 명확하게 나타나지 않아서 chrome browser 의 경우에는 그림과 같이 ‘Uncaught TypeError: Cannot call method ‘handleServerJS' of undefined' 라고 표시되고 댓글과 관련된 어떤 명령이 문제가 있음을 알 수는 있지만 그 원인이 무엇인지는 명확하게 알 수 없었고…

comments-evolved-fb-comments-number-debugging-chrom-browser
comments-evolved-fb-comments-number-debugging-chrom-browser

Firefox browser 의 경우에는 특별히 어떤 부분인지는 지목되지 않은 상태에서 암호화 통신이 지원되지 않는 이유때문에  어떤 명령이 활성화 되지 않는다는 것 만을 알 수 있었다.

comments-evolved-fb-comments-number-warning
comments-evolved-fb-comments-number-warning

이 두 가지로부터 추론하여 ssl을 지원하지 않는 것이 어떤 문제를 발생 시킬수도있다는 혹시나하는 마음에 ssl을 지원하는 서버에 comments evolved 을 설치했더니 facebook 댓글 수가  전체 댓글 수로 합산되는 것을 확인할 수 있었다. ( 그 동안 이것 때문에 여러 날을 테스트했는데… 결국 여기서 해결책을 찾게 되다니….)

    구글링해보면 facebook댓글 수를 특정 변수로 넘겨받는 방법은 여러가지가 있지만 결국 모든 방법에서 암호화가 지원되지 않으면 모든 방법이 무용지물이 되고 마는 것이었다.   하지만 아직 한 가지 희망은 남아있다.  ‘echo' 명령으로 화면에 총 댓글 수를 표시 해주는 기능은 ssl통인이 지원되지않는 서버에서도 유용하다,  이것을 어떤 방법으로든지 변형하면 변수에 값을 가져올수 있지않을까? 나중에 한번 변형을 시도해 볼 가치가 있다. (여기에 관해서는 다음글에 연재로 쓴다. )

2) disqus 와 wordpress 댓글의 중복 합산

      disqus  댓글은 기본적으로  wordpress 댓글과  동기화하는 것이 기본 옵션으로 설정되어있다.  따라서  이 옵션을  그대로 살려 둔다면 qisqus 나 워드프레스 댓글 중 어느 한 가지의 댓글은  댓글 수 합산식에서 삭제해 주어야 한다.

 

[!!!  중 요 !!!]

disqus 댓글이 존재하면 최종적으로  총 댓글 수 합산식이 유용하지 않고 disqus 댓글 수로 대체된다.   논리적으로는 disqus.php 파일에 있는

 add_filter('get_comments_number', 'dsq_comments_number');

  명령만을  주석 처리하면 디스커스 댓글 수로 바뀌지 말아야 한다고 생각했는데 …  그렇게 되지 않는다.   그 위치에 있는 모든 add_filter 명령을  주석처리하면 일단 디스커스 댓글 수로 변하지 않는다.  좀 더 테스트해봐야할 사항이다.

 

3) gplus 댓글

gplus 댓글은  이 경우에도  댓글수에 합산되지 않는데 아직 그 원인을 정확히 확인하지는 못했지만 이것은  Google Authorship 등록여부와 관련이 있는것으로 추정된다.  처음 을 설치할 때 댓글이 작동하는것으로 생각하여 주의깊게 살펴보지 않았는데 개발자는

이렇게 명확하게 밝히고 있다. 나중에 다시 테스트해 볼 계획이다.

 

4) wordpress pingback

이것은 명확한 댓글로 분류되고 있지는 않지만 만약 핑백을 댓글 수에 합산하고 싶다면

함수  

comments_evolved_get_wordpress_count()  

바로 밑에 핑백 댓글 수를  구하는 함수를 아래와 같이 정의하고

function comments_evolved_get_wp_pingback_count() {
 global $post, $comments, $wp_query, $comments_by_type, $id;
 $get_comments= get_comments('post_id=' . $id);
 $comments_by_type = &separate_comments($get_comments);
 return count($comments_by_type['pingback']);
}

$wp_pingbback_count = comments_evolved_get_wp_pingback_count();

이렇게 또 다른 변수에 값을 넘겨 준 후에 총 댓글 수 합산 식에 첨부해 주면 된다.

하지만 wordpress.php에서는  핑백을 포함한 댓글이 표시되고 있다.  이것도 나중에 다시 테스트 해볼 필요가 있다.

 

 

소셜댓글

Loading Disqus Comments ...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.