워드프레스 사이트의 메뉴에서 카테고리 글 개수를 표시하고 싶은 경우가 있을 수 있습니다. 내비게이션 메뉴에 추가된 카테고리 항목에 글 개수 (포스트 개수)를 표시하려는 경우 다음 글에서 소개하는 함수를 사용할 수 있습니다.
또한, 사이드바에 카테고리 목록을 표시하고 각 카테고리 항목에 글 개수를 표시할 수 있습니다. 카테고리 리스트를 드롭다운 메뉴로 표시하도록 설정할 수도 있습니다.
[ 이 글은 2024년 6월 27일에 최종 업데이트되었습니다. ]
워드프레스 메뉴에 카테고리 글 개수 표시하는 방법
워드프레스에서 카테고리를 메뉴에 추가하려면 워드프레스 알림판 » 디자인 » 메뉴 (워드프레스 버전에 따라 외모 » 메뉴)에서 원하는 메뉴를 선택한 다음 왼쪽 패널에서 "카테고리"를 눌러서 원하는 카테고리 항목을 오른쪽으로 끌어다 놓으면 됩니다.

이렇게 카테고리 항목을 메뉴에 추가하면 메뉴에 카테고리 이름이 추가됩니다. 하지만 개별 카테고리 내의 글 개수는 표시되지 않습니다.

위의 그림에서와 같이 카테고리 항목 옆에 글 개수가 표시되도록 하고 싶은 경우 다음과 같은 코드를 사용 중인 워드프레스 테마의 함수 파일(functions.php)에 추가하면 됩니다(참고로 위에서 "CSS"는 카테고리가 아니기 때문에 글 개수가 표시되지 않은 것입니다).
차일드 테마를 만들어서 차일드 테마 내의 함수 파일에 아래 함수를 추가하시기 바랍니다. 차일드 테마(자식 테마, 하위 테마)가 아닌 부모 테마(본래 테마) 내의 함수 파일에 코드를 추가할 경우, 추후 테마 업데이트 시 추가되거나 수정된 테마 파일이 초기화됩니다.
// Display post count for categories in WordPress menu navigations // 워드프레스 메뉴에서 카테고리 항목에 글 개수 표시하기 add_filter('the_title', 'wpse165333_the_title', 10, 2); function wpse165333_the_title($title, $post_ID) { if( 'nav_menu_item' == get_post_type($post_ID) ) { if( 'taxonomy' == get_post_meta($post_ID, '_menu_item_type', true) && 'category' == get_post_meta($post_ID, '_menu_item_object', true) ) { $category = get_category( get_post_meta($post_ID, '_menu_item_object_id', true) ); $title .= sprintf(' (%d)', $category->count); } } return $title; } // Source: stackexchange
FTP에 접속하여 테마의 함수 파일에 코드를 추가하세요.
get_post_meta는 포트스의 포스트 메타 필드를 가져오는 함수입니다(여기 참조), get_category는 여기를 참고해보시기 바랍니다.
참고로 Custom Taxonomy의 경우 테스트는 해보지 않았습니다만, get_term_by를 활용하면 가능할 것 같습니다(참고).
이 글에 소개된 코드 스니펫은 5년도 더 지났지만 최신 워드프레스 버전(아바다 테마와 이 블로그에 현재 설치되어 있는 GeneratePress 테마 사용)에서 테스트해보니 잘 작동하는 것을 확인했습니다(2024년 6월 기준).
워드프레스 메뉴에 카테고리와 태그 항목의 글 개수 표시하는 방법
상기 코드는 워드프레스 메뉴에서 카테고리 항목에 글 개수를 표시합니다. 카테고리뿐만 아니라 태그 항목에도 글 개수를 표시하는 방법에 대해 궁금해하시는 분이 계셔서 상기 코드를 조금 수정해보았습니다. 다음 코드를 차일드 테마의 함수 파일에 추가하면 카테고리뿐만 아니라 태그 항목에도 글 개수가 표시될 것입니다.
// Display Post Counts for Category and Tag Menu Items in WordPress
add_filter('the_title', 'custom_the_title', 10, 2);
function custom_the_title($title, $post_ID)
{
if( 'nav_menu_item' == get_post_type($post_ID) )
{
$menu_item_type = get_post_meta($post_ID, '_menu_item_type', true);
$menu_item_object = get_post_meta($post_ID, '_menu_item_object', true);
if( 'taxonomy' == $menu_item_type )
{
if( 'category' == $menu_item_object )
{
$category = get_category( get_post_meta($post_ID, '_menu_item_object_id', true) );
$title .= sprintf(' (%d)', $category->count);
}
elseif( 'post_tag' == $menu_item_object )
{
$tag = get_tag( get_post_meta($post_ID, '_menu_item_object_id', true) );
$title .= sprintf(' (%d)', $tag->count);
}
}
}
return $title;
}
실제로 테스트해보니 잘 작동하였습니다.

위의 그림에서 카테고리와 태그 항목에 글 개수가 표시되는 것을 확인할 수 있습니다. 다만, "보안"은 태그 항목이지만 글 개수가 표시되지 않고 있습니다. 이유는 모르겠지만, 디비에서 약간 꼬인 것 같기도 합니다. 특수한 경우를 제외하고는 잘 작동할 것입니다.
사이드바의 카테고리 목록에 포스트 개수 표시하기
사이드바에 카테고리 리스트를 표시하고 각 카테고리 항목에 글 개수를 표시하려는 경우 워드프레스 관리자 페이지 » 디자인 » 위젯에서 카테고리 위젯을 사이드바에 추가하고 "표시할 글 개수" 체크박스를 체크하면 카테고리에 글 개수가 표시됩니다.
워드프레스 5.8 버전에서 블록 위젯이 도입되었습니다. 블록 위젯을 사용하는 경우 카테고리 목록 블록 설정에서 표시할 글 개수를 체크하면 카테고리 글 개수가 표시됩니다.

계층구조 보이기를 체크하면 위의 그림과 같이 계층 구조로 표시됩니다. 또한, 드롭다운으로 표시를 선택하면 카테고리 목록이 드롭다운 메뉴로 표시됩니다.

클래식 위젯(고전 위젯)을 사용하는 경우 카테고리 위젯을 사이드바에 추가하고 "표시할 글 개수"를 체크할 수 있습니다.

그러면 다음과 같이 사이드바에 카테고리 목록이 표시되고 개별 카테고리 항목에 포스트 개수가 나타납니다.

스타일을 조정하려면 CSS를 사용할 수 있습니다. 기본적인 CSS는 그리 어렵지 않고 배우는 데 시간이 많이 소요되지 않습니다.😄
워드프레스 최신 버전에서는 블록 위젯이 사용됩니다. 예전 방식의 위젯(고전 위젯)을 원하는 경우 클래식 위젯 플러그인을 설치할 수 있습니다.
좋은 정보 감사합니다. 혹시 숫자 크기가 너무 커서 그런데, 숫자크기만 따로 줄이는 방법이 없을까요?
안녕하세요, Jpark님. 구체적으로 어떤 숫자 크기를 키우고 싶으신 건가요? 네이버 카페의 질문 게시판에 사이트 주소, 스크린샷 등과 함께 질문을 올려주시면 제가 체크한 후에 가능한지 여부를 알려드리겠습니다.
https://cafe.naver.com/wphomepage
와 신기하네요~ 다음에 필요할지도 몰라서 끌어가기 해갈께요~
좋은 포스팅 감사합니다!
혹시나 임의로 제작한 thumbnail이나, 끌어가기 글이 거부감이 드시면 언제든지 내리겠습니다. ㅠ
글 공유는 자유롭게 가능합니다. (다만 글 전체를 복사하거나 그림 링크까기 그대로 복사하여 사용하는 것만 자제해주시면 될 것 같습니다: https://www.thewordcracker.com/intermediate/prevent-hotlinking/ 글을 참고해보세요.)
즐거운 주말과 휴일 되시기 바랍니다^^
끌어가기를 하니, 복사된 단락에 제 애드센스 광고가 자동으로 박혀서 비공개로 전환후 삭제했습니당. 제가 작성한 글도 아닌데 제 광고가 삽입되는것이 도리에 어긋나는 것 같아서요 ㅎㅎ
하지만 즐겨찾기 해놨으니 언제든 방문해서 읽을 수 있겠죠?ㅎㅎ 지우시면 안돼요! ㅎ
korbuddy님의 애드센스 광고가 들어가도 상관없을 것 같습니다.ㅎㅎ