루프에서 특정 카테고리의 글만 표시/제외

Last Updated: 2015년 12월 14일 댓글

오랜만에 여유가 되어 블로그를 조금 수정했다.

워드프레스의 루프에서 특정 카테고리의 글만을 표시하는 방법은 다음 코드를 사용하면 된다:

<?php query_posts('cat=1'); ?>

cat=1에는 해당 카테고리의 ID가 위치한다. 글 개수를 제한하려면 다음과 같은 코드를 사용할 수 있다. (카테고리 ID를 확인하려면 이 글을 참고해보시기 바랍니다.)

<?php query_posts("showposts=5&cat=1"); ?>

그런데 위와 같은 코드를 사용하면 해당 카테고리의 글들만 표시되기는 하지만 몇 가지 문제가 발생했다. 가령 글이 많아서 여러 페이지에 표시해야 하는 경우 첫 페이지에서는 잘 작동하지만 다른 페이지를 선택하면 첫 번째 페이지만 나타난다. 즉, 최근의 글들만 첫 페이지에 나타나고 이전 글들은 볼 수 없다는 문제가 발생한다(페이지 내비게이션 문제).

특정 카테고리의 글을 제외하려면 ID 번호에 마이너스(-) 기호를 붙이면 된다.

<?php query_posts('cat=-1'); ?>

약간의 문제가 있지만 위의 코드는 많은 경우 유용하게 사용할 수 있다.

만약 위와 같은 문제가 없도록 하려면 다음과 같은 코드의 사용도 고려해볼 수 있다.

<?php $top_query = new WP_Query('cat=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>

그리고 특정 카테고리의 글을 제외하는 코드로 다음과 같은 코드도 사용할 수 있다.

query_posts($query_string . '&cat=-1' );

이 코드의 경우 페이지 내비게이션 문제는 발생하지 않지만 붙박이 글(Sticky Post)이 표시되지 않는다.


추가

위의 방법은 워드프레스 테마 소스를 직접 수정하게 됩니다. 다소 번거로운 작업이 될 수 있고 추후에 유지관리도 어려울 수 있습니다. 다른 방법으로 pre_get_posts 액션을 사용하는 방법이 있습니다. 자세한 내용은 "홈 페이지에 하나의 카테고리만 표시되도록 하기" 글을 참고해보시기 바랍니다.

워드크래커의 아바타 이미지

워드크래커

전문 영한번역가로 활동하고 있으며 10년 이상 워드프레스 정보꾸러미 블로그를 운영하고 있다. 네이버 카페 관리자

댓글 남기기

Leave a Comment

카카오톡 상담 카톡 서비스 상담