Comment Meta Field in WordPress

워드프레스에 비밀 댓글을 달자 II

몇 달 전에 bbPress의 플러그인을 사용하여 비밀 댓글을 다는 방법에 대해 살펴본 적이 있습니다(여기 참고). 하지만 그 방법은 해당 플러그인이 오랫동안 업데이트를 하지 않아서 테마에 따라 안 되는 경우가 많을 것입니다. 그래서 다른 방법이 없을까 생각하다가 WordPress Comments Fields라는 플러그인을 발견했습니다.

이 플러그인은 워드프레스 댓글에 사용자 필드를 추가할 수 있는 기능을 제공합니다. 간혹 잘 안 되는 테마가 있긴 하지만 대체적으로 잘 되는 것 같습니다. (3개 테마에서 테스트했는데, 2개는 되고 하나는 잘 안 되네요.) 그리고 JetPack 댓글 기능은 비활성화해야 합니다.

이 플러그인을 통해 사용자 필드를 추가하면 다음과 같이 사용자 필드가 추가됩니다.
Adding a private field in WordPress Comments

위의 그림에는 비밀글 지정을 위한 필드를 추가했지만, 다른 정보(가령: 지역 정보)를 받기를 원하는 경우 입력 필드를 추가할 수 있습니다.

위와 같이 추가하고 테스트로 댓글을 입력해보면:
Custom filed example in WordPress Comments

그림과 같이 추가된 필드 내용이 아래에 표시됩니다. (그림에서 박스로 표시된 부분은 플러그인 소스를 수정하여 쉽게 제거가 가능할 것 같습니다.)

이제 문제는 비밀글 지정을 위해서는 데이터베이스에 추가된 “사용자 지정 필드”의 값을 가져오는 것입니다. 데이터베이스를 뒤져보면 다음과 같이 “commentmeta” 테이블에 저장되어 있음을 알 수 있습니다.
Comment Meta Field in WordPress

이 코멘트 메타 테이블 값을 가져와서 값이 ‘공개’이면 일반적으로 표시되도록 하고 ‘비밀글’이면 관리자와 댓글 작성자만 볼 수 있도록 코드를 만들면 됩니다. 데이터베이스 값을 가져오는 것과 관련하여 약간 헤매었는데요, 알고 보면 매우 간단합니다. 이 작업을 위해서는 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 {
// 공개 시 코드
}
?>

비밀글 지정 코드를 만드는 것은 쉽게 가능하리라 생각됩니다. (공개 시 코드는 그냥 현재 코드를 사용하면 되겠죠?) 이상으로 워드프레스에서 사용자 정의 댓글 필드를 추가하여 비밀글로 지정하는 방법에 대한 아이디어를 살펴보았습니다.



기부를 통해 이 블로그를 후원하실 수 있습니다.
워드프레스 설치/제작/문제해결이 필요한 경우 서비스(유료)를 요청해주세요.