워드프레스에서 블로그 첫화면은 index.php나 home.php 템플릿을 사용해 보여주고, 개별 포스트를 보여줄 때는 single.php를 이용합니다. 카테고리 페이지는 category.php를 이용하는데, 카테고리 템플릿 파일의 이름을 category-1.php, category-2.php 처럼 ‘category-’뒤에 카테고리 ID를 넣어주어 각각 다르게 꾸밀 있습니다.
반면 single.php는 카테고리 페이지처럼 이렇게 카테고리 ID를 이용해 달리 꾸밀 수 없지요. 그런데 역시나 찾아보니 functions.php에 필터링 코드를 추가해 카테고리별로 각각 다른 single.php 파일을 적용할 수 있는 방법이 있습니다. 이 말은 곧, 카테고리별로 포스트 디자인을 달리할 수 있다는 말입니다.
적용하는 방법은 간단합니다. 아래 코드를 사용 중인 테마의 functions.php를 열어 ‘<?php’ 바로 아래에 추가합니다. 다음 single.php 파일을 복사해 single-ID.php로 이름을 바꿔줍니다. 이때 ID는 카테고리 ID입니다. 카테고리 ID는 Post > Categories로 이동해 카테고리 이름이나 Edit 위에 커서를 올리면 브라우저의 상태표시줄에 ‘cat_ID=231′처럼 뜹니다. 곧 A라는 카테고리의 ID가 231이라면 single-231.php로 파일 이름을 바꿔주시면 되겠습니다.
add_filter('single_template', create_function('$t', 'foreach( (array) get_the_category() as $cat ) { if ( file_exists(TEMPLATEPATH . "/single-{$cat->term_id}.php") ) return TEMPLATEPATH . "/single-{$cat->term_id}.php"; } return $t;' ));
코드는 해당 포스트의 카테고리 ID로 된 single-ID.php 파일이 있으면 해당 템플릿을 이용해 포스트를 뿌려주며, 없을 경우 기본 single.php 템플릿을 이용합니다. 곧 모든 카테고리별로 single-ID.php로 바꿀 필요가 없다는 뜻입니다.
CSS를 다룰 줄 아신다면 카테고리별로 전체 디자인을 달리할 수 있겠지만, 간단하게는 카테고리별로 다른 광고를 적용해볼 수 있습니다. 애드센스를 사용하신다면, 카테고리별로 다른 크기의 애드센스 광고 단위를 위치를 달리해 적용하실 수 있겠습니다.
특정 포스트를 여러개의 카테고리로 분류한 경우 카테고리 ID가 큰 single-ID.php 템플릿 파일을 이용하는데, 이 점은 정확하지 않을 수 있습니다. 제 경우는 카테고리를 복수지정하지 않기 때문에 시험삼아 몇번 해봤을 뿐이니까요.
카테고리별로 사이드바도 각각 다르게 하고 싶으시다면 ‘템플릿 페이지별로 다른 사이드바 적용하기‘글을 참고하세요. 혹 Appearance > Widgets 메뉴를 이용해 사이드바에 위젯을 추가해 사용하지 않으신다면 single-ID.php 파일에서 <?php include (’sidebar-231.php’); ?> 처럼 바로 사이드바 템플릿 파일을 불러오시면 됩니다.
코드 출처 : http://www.nathanrice.net/blog/wordpress-single-post-templates/