몇 달 전에 bbPress의 플러그인을 사용하여 비밀 댓글을 다는 방법에 대해 살펴본 적이 있습니다(여기 참고). 하지만 그 방법은 해당 플러그인이 오랫동안 업데이트를 하지 않아서 테마에 따라 안 되는 경우가 많을 것입니다. 그래서 다른 방법이 없을까 생각하다가 WordPress Comments Fields라는 플러그인을 발견했습니다.
※ 업데이트: 여기에 언급된 플러그인은 오랫동안 업데이트가 되지 않고 방치 되었지만 다시 업데이트가 되고 있는 것 같습니다.
Private Comment라는 플러그인을 수정하여 비밀댓글 플러그인을 만들어 보았습니다.
워드프레스에 비밀 댓글을 달자 II
이 플러그인은 워드프레스 댓글에 사용자 필드를 추가할 수 있는 기능을 제공합니다. 간혹 잘 안 되는 테마가 있긴 하지만 대체적으로 잘 되는 것 같습니다. (3개 테마에서 테스트했는데, 2개는 되고 하나는 잘 안 되네요.) 그리고 JetPack 댓글 기능은 비활성화해야 합니다.
이 플러그인을 통해 사용자 필드를 추가하면 다음과 같이 사용자 필드가 추가됩니다.
위의 그림에는 비밀글 지정을 위한 필드를 추가했지만, 다른 정보(가령: 지역 정보)를 받기를 원하는 경우 입력 필드를 추가할 수 있습니다.
위와 같이 추가하고 테스트로 댓글을 입력해보면:
그림과 같이 추가된 필드 내용이 아래에 표시됩니다. (그림에서 박스로 표시된 부분은 플러그인 소스를 수정하여 쉽게 제거가 가능할 것 같습니다.)
이제 문제는 비밀글 지정을 위해서는 데이터베이스에 추가된 "사용자 지정 필드"의 값을 가져오는 것입니다. 데이터베이스를 뒤져보면 다음과 같이 "commentmeta" 테이블에 저장되어 있음을 알 수 있습니다.
이 코멘트 메타 테이블 값을 가져와서 값이 '공개'이면 일반적으로 표시되도록 하고 '비밀글'이면 관리자와 댓글 작성자만 볼 수 있도록 코드를 만들면 됩니다. 데이터베이스 값을 가져오는 것과 관련하여 약간 헤매었는데요, 알고 보면 매우 간단합니다. 이 작업을 위해서는 get comment meta 함수를 사용하면 됩니다. 이 함수의 사용법은 다음과 같습니다:
<?php $meta_values = get_comment_meta( $comment_id, $key, $single ); ?>
그리고 코멘트 루프와 관련된 파일이나 함수를 찾아서 적당한 조건부 서식을 추가하면 원하는 기능을 구현할 수 있습니다. 테마의 함수를 찾아보면 comment 서식을 지정하는 함수가 있을 것입니다. 그 함수 내에 적당한 위치에 추가시켜 됩니다. 위의 그림처럼 meta_key에 secretid를 추가한 경우 다음과 비슷한 조건절을 사용하여 비밀글 여부를 체크할 수 있습니다.
<?php $comment_ID_this = $comment->comment_ID; $comment_meta_value = get_comment_meta($comment_ID_this, 'secretid', true); if($comment_meta_value == '비밀글') { // 비밀글 지정 시 코드 } else { // 공개 시 코드 } ?>
비밀글 지정 코드를 만드는 것은 쉽게 가능하리라 생각됩니다. (공개 시 코드는 그냥 현재 코드를 사용하면 되겠죠?) 이상으로 워드프레스에서 사용자 정의 댓글 필드를 추가하여 비밀글로 지정하는 방법에 대한 아이디어를 살펴보았습니다.
비밀 댓글 되나요
다음 글에서 소개하는 Private Comment 플러그인을 설치하여 테스트해보시기 바랍니다.
https://www.thewordcracker.com/intermediate/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4-%EB%B9%84%EB%B0%80%EB%8C%93%EA%B8%80private-comment-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8/
참고로 이 기능을 구현한 코드를 다음 글에서 확인할 수 있습니다.
http://wpquestions.com/Comment_privacy/10468
제대로 작동하는지 여부는 잘 모르겠습니다. 기간이 조금 지났기 때문에 제대로 작동하지 않을 수도 있습니다.