모두의매뉴얼
🚀

[워드프레스] 포스트에 달린 코멘트 개수를 표시하는 여러가지 방법

📈3


워드프레스로 사이트를 만들어가면서 비루한 웹사이트임에도 방문자 분들께서 코멘트를 달아주시더라구요.

그래서 테마도 직접 만드는 김에 달아주신 댓글이 개수가 얼마나 되나 표시하려고 워드프레스 함수를 찾아 보았습니다.

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를 넣어주고, typecomment 로 지정해 진짜 리얼 코멘트만 가져오라고 명령하면서, count 키를 True 로 지정해 개수만 반환 하도록 만들어 줍니다. 만약 count 를 지정하지 않으면, get_comments 함수는 코멘트 전체 목록을 반환하겠죠?


조금 복잡해 보이지만 찬찬히 살펴 보면 특별히 어려울 내용은 없습니다.

더욱 자세한 내용은 아래 참고자료의 링크들을 확인해 주세요.

끝.

참고자료

    댓글 남기기

© 모두의매뉴얼 2024
🗝️