[WordPress] 검색결과 및 아카이브 출력갯수 제한없애기
Posted in Wordpress on August 20th, 2010 by simplism – 2 Comments사용환경
- 블로그 유형 : 설치형 워드프레스
- 버전 : Lastest ( 3.0.1)
- 테마 : SimpleX
워드프레스를 사용하면서 가장 불편한 것으로 꼽는 것은 포스트 간 이동이 번거롭다는 것입니다. 다른 서비스형 블로그들과 달리 페이지 이동방식이 Older Entries, Newer Entires 형태로 제한이 되어있기 때문입니다. 그렇지만, 기본적으로 제공하는 블로그 내의 포스트 검색하는 검색과 Archive(아카이브)라는 월 단위로 접근할 수 있는 형태가 있기에 그나마 사용할 만했습니다.
주로 블로그의 트래픽은 외부 검색엔진의 검색결과에 크게 의존하고 있으며, 심지어 저의 경우도 제가 작성했던 글도 관리자 페이지(대시보드) 또는 검색을 활용하고 있습니다.
문제는 첫 페이지의 포스트 갯수가 검색결과 및 아카이브 선택 시 출력 포스트의 갯수에 영향을 미친다는 것입니다.
이 문제는 카테고리를 선택했을 때나 원하는 월의 포스트를 찾으려 할 때 문제가 발생합니다. 저의 경우는 기본 출력 포스트의 수를 1개로 한정하고 있기에… 검색 시나 아카이브를 선택했을 때도 한 개만 나온다는 것이 문제입니다.
01. 문제점
문제점 : 페이지당 출력할 포스트의 갯수가 검색결과 및 아카이브 선택 시 출력하는 포스트의 갯수에 영향을 미친다는 것
이 문제점를 해결하기 위해서 페이지당 출력포스트의 숫자를 늘려버리면 주로 긴 포스트를 작성하는 저의 경우에는 엄청난 길이의 페이지가 출력되어 버립니다. 그래서 페이지당 출력할 포스트의 수를 1개로 한정하고 있는 것입니다.
결국, 다른 방식으로 해결할 수 밖에 없었습니다. 테마소스를 직접 변경해야 하는 것입니다…. OTL…;
02. 관련파일
관련 웹문서들을 검색해봤는데, 다른 플러그인을 통한 검색이 아니라 워드프레스에서 제공하는 검색을 사용하는 경우에는 테마 내의 search.php파일과 archive.php파일을 수정하면 됩니다. 해당 php파일의 아래와 같은 부분이 페이지당 출력할 포스트에 영향을 받는 부분이 있는 것입니다.
- 검색기능관련 파일 : {$WP-PATH}/wp-content/themes/{$theme-name}/search.php
- 아카이브관련 파일 : {$WP-PATH}/wp-content/themes/{$theme-name}/archive.php
03. search.php 파일수정
이제 어떠한 키워드로 검색을 했을 경우에 포스트의 제목과 기본 정보(meta)만을 출력하기 위해서 아래 부분을 찾습니다.
1 2 | <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> |
위와 같은 부분이 있습니다. 두 줄 사이에 글자를 출력한다거나 하는 부분이 있긴 하지만 그것은 화면에만 영향을 주지 실제 기능과는 관련이 없는 부분이므로 위에 넣어두진 않았습니다.
워드프레스의 테마를 작성해본 경험이 없어서 정확한 내용은 모르겠지만 추측컨데 검색결과가 있으면 <?php if ( have_posts() ); : ?> 하위의 <?php while (have_posts()) : the_posts(); ?> 를 페이지당 포스트의 갯수만큼 출력을 하는 것 같습니다.
그래서 만약에 검색결과가 페이지당 포스트 갯수에 영향을 받지 않도록 하기 위해서 아래와 같이 두 줄 사이에 한 줄을 더 넣어주면 됩니다. (2번 라인)
1 2 3 | <?php if (have_posts()) : ?> <?php $posts=query_posts($query_string . '&posts_per_page=-1'); ?> <?php while (have_posts()) : the_post(); ?> |
정확하게는 모르겠지만 검색결과가 페이지당 포스트($posts_per_page)에 영향을 받으므로 그 값을 -1로 만들어버려서 검색결과를 출력할 때 페이지당 포스트의 갯수에 영향을 받지 않도록 하는 것 같습니다.
04. archive.php 파일수정
search.php파일과 마찬가지로 우측 사이드바에서 몇년 몇월을 선택하는 경우에는 그 해당 월에 작성된 포스트를 모두 출력했으면 하는 것이 제가 의도한 것입니다. 이 아카이브의 출력도 워드프레스의 기본 설정인 페이지당 포스트 갯수에 영향을 받으므로 search.php파일과 마찬가지로 한 줄을 추가해서 넣어주면 페이지당 포스트갯수에 영향을 미치지 않고 해당 월에 작성된 포스트가 모두 출력됩니다.
1 2 3 4 5 6 | <!-- <div class="entry"> <?php the_content('<span class="more">read more »</span>') ?> </div> <?php if(is_single()) {?><p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?></p><?php } ?> --> |
추가적으로 아카이브의 경우에는 포스트의 내용(entry)가 출력되는 데, 그렇게 되면 원하는 포스트를 빠르게 찾을 수 없어서 포스트의 내용을 출력하는 위 부분을 주석처리해버렸습니다. 그렇게 하면 검색과 마찬가지로 제목과 간단한 정보만 페이지에 출력이 되는 것입니다.
05. 적용 결과
위의 것을 적용해보니 일단 그나마 조금 나아진 것 같습니다.
위의 화면은 “워드프레스”로 검색을 한 결과입니다. 이전의 경우에는 검색결과 중에서 가장 최근의 글인 “[WordPress] 블로그 정비”라는 포스트의 제목과 메타정보만 화면에 뿌려줬었습니다.(페이지당 포스트 갯수에 영향을 미쳤었으므로…) 현재는 페이지당 포스트 갯수에 검색이 영향이 미치지 않으므로 검색결과에 해당되는 포스트의 전부를 보여주게 됩니다.
저의 경우는 현재 작성된 포스트의 갯수가 100개가 안되므로 위 처럼 &posts_per_page의 값에 -1을 그대로 두었지만, 사용 중인 워드프레스에서 퍼블리싱된 포스트의 갯수가 너무 많아서 한 페이지에 전체 검색결과를 출력하면 너무 길어지는 경우에는 적당히 -1에 숫자값을 넣어주시면 됩니다. 그러면 검색결과를 여러 페이지로 나눠서 출력할 수 있습니다.
위는 특정 카테고리를 선택했을 경우의 출력화면입니다. 이전의 테마에서는 해당 카테고리의 가장 최근의 포스트의 내용을 출력했었는데… 이 테마의 경우에는 목록을 표시하도록 되어 있는 것 같습니다. (수정하려고 했었던 부분인데…ㅎ)
위의 출력화면은 2010년도 8월 아카이브를 선택했을 경우의 화면입니다. 이전에는 특정 아카이브를 선택하면 해당 달에 퍼블리싱된 포스트의 가장 최근날짜의 포스트의 내용을 하나씩(posts_per_page에 영향을 받는..) 출력하는 것이었는데… 아카이브를 선택하는 경우에는 해당 달에 작성된 포스트 중에 특정 포스트를 찾으려는 목적이 강하므로 포스트의 내용을 출력하는 것보다는 제목만을 출력하는 것이 더 접근하기에 용이하다고 판단하여 내용을 출력하는 부분(entry)을 주석처리해서 제목들만 출력되도록 하였습니다.
마찬가지로 아카이브의 경우에도 posts_per_page 값에 영향을 받았었지만 현재는 영향을 받지 않고 있습니다.
06. 보완해야할 사항
제 블로그의 경우는 제 스스로의 문서를 보관하려는 목적이 크지만 퍼블리싱이 목적인 블로그의 특성 상 타인이 보더라도 도움이 될 수 있도록 최대한 읽기 편리하게 작성하려고 노력하고 있습니다.
그래서 우분투나 리눅스 관련(사용자들이 어려워하는 내용의 경우….) 포스트들의 경우에는 스크린샷이 과하게 찍혀있어서 포스트의 내용이 엄청 길어지게 됩니다. 그런데, 막상 제가 제 블로그를 타인의 블로그라고 생각하고 이 블로그 내의 다른 좋은 글들이 없을까… 하는 생각으로 이동을 해보지만 네비게이팅(이곳저곳 이동하는 것)이 불편한 점이 여전합니다.
다른 블로그(특히 서비스형)와 비교를 해보니… 대부분의 블로그들은 특정 포스트를 선택했을 때, 해당 포스트가 속해있는 카테고리의 다른 포스트의 제목을 출력해주는 것들이 있더군요… (상단이나 하단, 또는 상하단 전부에…)
위의 화면은 이글루스의 연관글 목록을 자동으로 출력해주는 기능을 캡쳐한 것입니다. 이 경우에는 이글루스 내의 다른 블로거들이 작성한 글들 중에 유사한 내용의 포스트를 연결해주는 것입니다. 이렇게 외부의 글까지 네비게이팅을 할 일은 없지만 최소한 제 블로그 내에도 이러한 기능을 넣으면 좀 더 편리하게 포스트간 이동이 가능할 것이라고 생각했습니다.
현재 관련된 플러그인을 설치했지만 어떻게 사용하는지… 잘 모르겠어서 여러 가지 방법으로 테스트를 진행 중이긴 합니다. (안되면…. 어쩔 수 없이 테마 소스레벨에서의 변경을….? OTL…ㅠㅠ);
시간의 여유가 더 주어진다면, 현재 적용 중인 테마를 더 분석해서 필요한 부분을 대폭적으로 수정할 생각입니다.(하지만… 조금 있으면 개강? 췟..);


