[워드프레스] 포스트에 달린 코멘트 개수를 표시하는 여러가지 방법
워드프레스로 사이트를 만들어가면서 비루한 웹사이트임에도 방문자 분들께서 코멘트를 달아주시더라구요.
그래서 테마도 직접 만드는 김에 달아주신 댓글이 개수가 얼마나 되나 표시하려고 워드프레스 함수를 찾아 보았습니다.
comments_number
내장된 인프라가 아주 탄탄한 워드프레스이기 때문에 당연하게도 자체적으로 함수를 제공합니다. 그 함수가 바로 comments_number
함수 입니다.
사용법이 조금 복잡해 보이지만, 간단합니다.
(아래 코드에서 대괄호로 표시된 인수는 넣어도 되고 안 넣어도 되는 선택적 인수입니다.)
<? comments_number( [$zero], [$one], [$more], [$post] ); ?>
위 사용법으로 comments_number
함수를 사용하면 되는데, $zero
항목은 코멘트가 없을 때 표시할 내용이고, $one
은 코멘트가 한 개 일 때, $more
는 코멘트가 두 개 이상일 때 표시할 내용입니다. $post
에는 포스트의 ID
또는 $post
오브젝트 자체가 들어가면 됩니다.
get_comments_number
뭔가 조금 복잡하다? 나는 간단하게 숫자만 얻고 싶을 뿐이다? 하시는 분들은 get_comments_number
함수를 사용하면 됩니다.
<? echo get_comments_number( [$post] ); ?>
훨씬 더 심플하죠? 선택적으로 $post
인수를 넣으면 됩니다. 마찬가지로 포스트의 ID
를 넣거나 $post
오브젝트 자체를 넣으면 됩니다.
문제 발생
그런데 여기서 문제가 발생합니다.
앞에서 소개해드린 comments_number
함수나 get_comments_number
함수는 단순히 코멘트의 개수 뿐만 아니라 핑백, 트랙백 개수까지 모두 포함한 숫자를 반환해주거든요. 그래서 가끔 달린 댓글은 없는데 코멘트 개수가 1 이상으로 나오는 현상을 볼 수 있습니다.
그 방법은 해결하는 방법은? get_comments
함수를 사용하는 것입니다.
get_comments
get_comments
함수는 원래 해당 포스트에 달린 코멘트, 핑백, 트랙백 목록을 가져오는 함수입니다. 기본적인 사용법은 아래와 같습니다.
$comments = get_comments( [$args] );
배열 형태로된 인수 $args
를 선택적으로 넣을 수 있는데, 여기에 마법의 레시피가 있죠. 아래 예제 코드를 봅시다.
<?
$args = array(
'post_id' => $post->ID,
'type' => 'comment',
'count' => True,
);
$CommentsNum = get_comments( $args );
?>
인수로 들어갈 배열에 post_id
키에 코멘트를 가져올 포스트의 ID
를 넣어주고, type
을 comment
로 지정해 진짜 리얼 코멘트만 가져오라고 명령하면서, count
키를 True
로 지정해 개수만 반환 하도록 만들어 줍니다. 만약 count
를 지정하지 않으면, get_comments
함수는 코멘트 전체 목록을 반환하겠죠?
조금 복잡해 보이지만 찬찬히 살펴 보면 특별히 어려울 내용은 없습니다.
더욱 자세한 내용은 아래 참고자료의 링크들을 확인해 주세요.
끝.
참고자료
- comments_number(), WordPress Developer Resources
- get_comments_number(), WordPress Developer Resources
- get_comments(), WordPress Developer Resources
댓글 남기기