카테고리 위젯에 RSS 피드 주소 표시하기
2007년 7월 21일 by 김 승엽 View blog reactions
이틀전에 Xeph 님께서 WordPress Autosave Error 에 남기신 코멘트에 카테고리에 RSS feed 주소를 표시하려면 어떻게 하는지 물어보신 일이 있었습니다. 그래서 제가 알고 있는대로
카테고리별 RSS 링크 출력은
<?php wp_list_categories('orderby=name&show_count=1&feed=RSS'); ?>와 같이 카테고리 출력 부분에서 옵션을 지정해 주시면 됩니다. 만들어진지 좀 된 테마를 사용하신다면 wp_list_cats() 를 사용할 수도 있는데 사용하지 않게 된 template tag 이니 wp_list_categories 로 바꿔주시는게 좋습니다.
그런데 한가지 덧붙이자면 제 블로그의 카테고리 RSS 링크가 표시만 되지 제대로 링크가 걸리지 않는 버그가 있습니다. 워드프레스의 버그 같은데 http://unfusion.kunsan.ac.kr/word/archive/category/3/pluginsfeed 와 같이 feed 앞에 / 가 빠져서 문제를 일으킵니다. 퍼머링크 설정에서 조정을 해주면 되긴 하는데 확실한 해결책은 아닙니다. 워드프레스의 코어 부분을 건드려야 할 것 같은데 참고만 하세요.![]()
라고 알려 드렸는데 오늘 새벽에 이게 잘못된 답이었다는 사실을 알았습니다. 완벽하게 틀린 답은 아니지만 아마도 Xeph님은 꽤 당황스러우셨을 것 같습니다. 엉뚱한 데를 긁고 있었으니까요. Xeph 님도 iTheme 를 사용하고 계시는데 Sidebar template 을 직접 수정하신다면 위와 같은 해결책이 먹히지만 그렇지 않고 Widget 으로 사이드 바를 구성하고 계시다면 iTheme 에선 저 방법을 사용할 수가 없습니다. 수정해야할 Sidebar 템플릿 파일에서는 wp_list_categories 태그를 찾을 수 없기 때문입니다.
Xeph 님께 답부터 말씀드리면 카테고리 피드가 지원되는 위젯을 찾거나 만들어서 사용하시는 방법과 워드프레스의 Core 파일을 직접 수정하는 방법이 있습니다. 워드프레스의 Core 파일을 건드리는 경우에는 /wp-include/widget.php 파일의 623 번째 라인을 아래와 같이 수정해 주시면 됩니다.
Core 파일을 직접 수정하는 것은 나중에 워드프레스가 업데이트 되었을 때마다 수정해야 하는 번거로움이 있어서 그리 권해드리고 싶지는 않습니다.
위젯을 추가하실 경우에는 테마 디렉토리의 functions.php 파일 맨 아래에 아래의 코드를 넣어 주시면 됩니다. 아래의 코드는 iTheme 용이고 다른 테마에는 적용되지 않습니다.
?>
<!–sidebox start –>
<div id="categories" class="dbx-box">
<h3 class="dbx-handle"><?php _e('Categories'); ?></h3>
<div class="dbx-content">
<ul>
<?php wp_list_categories('orderby=name&show_count=1&feed=RSS&title_li='); ?>
</ul>
</div>
</div>
<!–sidebox end –><?php
}
if ( function_exists('register_sidebar_widget') )
register_sidebar_widget(__('Categories'), 'widget_itheme_categories');
?>
워드프레스에 Widget 플러그인이 포함 되면서 기본적인 Widget 들도 추가된 모양인데 링크, 카테고리, 페이지들의 출력을 위한 이런 기본 적인Widget들이 widget.php에 추가되어 있었습니다. 그래서 특별히 저런 Widget들이 테마에 추가되어 있지 않은 경우는 저 Core 파일에 포함된 것들을 사용하도록 한 것인데 아쉽게도 기본 Categories Widget 에는 RSS feed를 표시하는 옵션은 포함되어 있지 않아서 직접 저렇게 core 파일을 수정하거나 Widget을 추가하는 방법을 써야 합니다.
제가 좀 더 살펴보고 답을 드렸어야 하는데 그러지 못하고 답을 드려서 죄송합니다. 이번에는 원하시는 대로 되시길 바랍니다.
:
:
:
DynO// 도움이 되셨다니 다행입니다. 원래 간단한 일인데 위젯을 지원하는 테마에서 까다로운 일이 되기도 합니다.
카테고리별 rss를 뿌릴수없을까 하고 찾다가 보니.. 여기내요 ^^
정말 유용한 정보예요.ㅠ.ㅠ
감사합니다~~
dudtn// rss 에 포스트가 속한 카테고리 명을 출력하는 템플릿 태그인 모양입니다. 한 번도 사용해 본 일이 없는 태그인데 지금 보니 태그들도 카테고리로 인식해 출력하는 모양이네요.
코어를 수정하시는 것 보다 테마의 widget 을 추가하시는게 나중을 위해서 나을 것 같습니다.
codex wordpress 에 category rss 관련글이 있어서
카테고리에 feed 주소를 보여줄 수 있겠지 하고 열심히 고쳐봤습니다만 안되더군요…
결국 검색을 해서 님이 가려쳐주신 core를 건드리는 것으로 해결했네요 ㅋㅋㅋ
ㅋ 결국은 승엽님 덕에 많은 문제들을 해결합니다. 감사합니다.^^
궁금한 건 링크건 페이지에 나오는 태그 템플릿은 어디에 쓰는 건지요… 혹시 아시면^ㅡ^
dudtn// 자동으로 생성되는 것 맞습니다. 위의 방법은 사이드 바의 카테고리 리스트에서 각 카테고리 항목옆에 (RSS) 라고 표시된 링크를 추가하는 방법을 적은 것입니다. 템플릿 태그의 옵션을 조정해주면 해결되는 간단한 일인데 Widget 기능이 추가된 플러그인에서는 제대로 작동하지 않는 경우가 있더군요.
page로 aricive page를 만들만 카테고리별로 rss 자동생성해주지 않나요?
물론 사이드바는 아니지만….
테마마다 다른 건가요??
Xeph// 아 역시 따옴표 문제였군요
그리고 그 분류가 두 개 나오지 않고 바로 교체되는 것은 제 블로그 문제인가 봅니다. 원칙적으로는 Core 에서 카테고리 분류용 Widget이 테마에 따로 제공 된다는 것을 검사해서 있을 경우에는 하나만 나와야 하거든요. 제 블로그 어디가 잘못 된 건지 살펴봐야 겠네요.
위젯의 이름을 Cagetories2로 하니 원래 Categories와 Categories2모두 목록에 표시되네요. 정말 감사드립니다!
음, 정말 따옴표 수정하니 잘 됩니다 ^^
그런데 이상하게도 위젯을 교환하지 않아도 바로 적용되버리네요.
게다가 위젯에 카테고리 위젯도 하나밖이에요~
흠.. 문제는 없어 보입니다만 궁금합니다 ^^;
Xeph // 지금 수정하시는 모양이네요. functions.php 수정 하실 때 그냥 복사 & 붙여넣기 하시면 에러 발생할 겁니다. 작은 따옴표와 큰 따옴표가 바뀌거든요. 아! 그리고 설명이 하나 빠졌는데 저렇게 Widget 추가하고 나시면 아마 분류라는 이름의 Widget이 두 개로 나올 겁니다. 하나는 기본 위젯이고 다른 하나는 수정해서 추가한 위젯이니 이것을 바꿔주셔야 메인 페이지에 적용됩니다. Core 파일 수정하는 것은 이런 과정이 필요 없구요.
혹시나 해서 제가 수정한 파일 압축해서 올려 놓겠습니다.
http://unfusion.kunsan.ac.kr/word/pds-image/functions.rar
Parse error: syntax error, unexpected '=' in /home/www/1/xeph/public_html/wp-content/themes/itheme-1-1/functions.php on line 58
이 에러가 나네요..
우와.. 감사합니다 +_+ 시도해 보겠습니다!
전 이리저리 해보고 안되길래.. 그냥 포기했었어요 ^^;