워드프레스 2.7에서 댓글과 트랙백을 분리하여 출력

얼마전 등록한 워드프레스 2.7 이후의 댓글 출력 환경글에서 나아가 좀 더 입맛에 맞는 댓글 출력 환경을 제공하는 몇가지 방법을 소개해 보려 한다.

관련 글

  1. 워드프레스 2.7 이후의 댓글 환경 첫번째
  2. 댓글과 트랙백(핑백)의 분리(현재 글)
  3. 댓글 페이지 탐색을 번호로 표시하기(준비중)
  4. Rely(응답) 링크 자바스크립트 적용(준비중)

댓글과 트랙백의 분리

아직은 구현하는데 불편함이 있어 일반 이용자 보다는 테마제작자에게 그 기능을 활용 할 것을 제안하고 있다는 느낌을 주고 있는 기능이 있는데, 그 중 개인적으로 관심이 가는 것은 댓글과 트랙백(핑백)을 나눠주는 기능이다.

wp_list_comments() 함수를 살펴본 적이 있다면 알 수 있듯이, 함수 자체에서도 일반 댓글과 트랙백 중 원하는 것만 출력해 줄 수 있는 ‘type’ 이라는 설정변수를 가지고 있다.

또한, 댓글 템플릿을 불러오는 comments_template() 함수에서도 댓글을 종류별로 분리할 것인지를 지정하는 설정변수가 존재한다.

comments.php 파일 수정

우선 지난 글에서 댓글 목록 출력부분을 2.7에 맞게 수정하였다면 아래와 같을 것이다.

이 목록에서는 우선 댓글만 출력하기로 하고 아래와 같이 type 변수를 추가한다. 테마에 따라서 기본적으로 다른 설정 변수가 있을 수도 있으나.

이제 그 아래 또는 위 중 원하는 곳에 트랙백(핑백)의 목록을 출력하는 내용을 추가하면된다. 참고로, 핑백과 트랙백 또한 분리하여 출력 할 수 있지만 여기서는 두가지를 함께 출력하기로 하자. (핑백: type=pingback, 트랙백: type=trackback, 핑백+트랙백: type=pings)

'ol'의 클래스(class)를 지정할 때 댓글 목록과 트랙백(핑백) 목록을 똑같이 출력하려면 댓글과 같이 class="commentlist" 라고 지정하면 되지만, 이와 다르게 출력하려면 class="pinglist" 와 같이 구분하여 줄 필요가 있다.

여기서 생각해 봐야 할 문제가 생긴다. 보통은 if (have_comments()) 조건을 통해서 댓글이 존재하는지 확인하고 없다면 ‘No comments(댓글이 없습니다)’ 등의 문구를 표현하는데, 댓글과 트랙백(핑백)을 분리해 놓았으니, 각각에 내용물이 있는지를 또 확인해 줘야만 한다는 것이다.

예를들어 해당 글에 댓글은 없고 트랙백만 존재한다면 댓글 목록 부분은 HTML 에러를 발생하면서 목록을 감싸주는 태그만 덩럴 남아있게 되는 것이다.

이 문제를 해결하기 위해서, 댓글 목록 출력 부분과 트랙백(핑백)목록 출력 부분을 아래와 같이 조건을 붙여 감싸준다.

여기까지만 해도 일단, 댓글과 트랙백(핑백)이 분리되어 표시되긴 하지만, 아직은 살짝 모자란 감이 있는 듯 하다. 우선, 댓글은 등록자가 사람이고? 트랙백(핑백)은 등록자가 어떤 사람이 등록한 이 되기 때문에, 댓글 등록자의 이름 부분이 상대적으로 굉장히 길어지는 경우도 많고, 내용 또한 그러하다.

트랙백(핑백) 목록 출력 방식 변경

wp_list_comments() 함수에서는 목록의 출력을 좀 더 유연하게 하기 위하여 callback, end-callback 설정 변수를 제공하고 있다. 이 변수에 자신이 등록한 함수의 이름을 등록하면, 목록내의 개별 댓글의 출력 방식을 자신의 함수로 대체 할 수 있게된다.

우선 개별 트랙백(핑백)의 출력 내용이 간단하게 아래와 같다고 가정해 보자.

pinglist-kiss-theme-082net

사용중인 테마폴더에서 functions.php파일을 열어(없다면 새로 한 만들면 된다.) 맨 아래에(또는 원하는 곳에) 아래와 같은 새로운 함수를 하나 추가한다.
(함수 이름은 입맛에 맞게 지정해 주면 됨)

이제, wp_list_comments 함수에 자신이 등록한 함수를 callback 변수에 넣어주면 된다.

좀 더 자신의 입맛에 맞게 바꾸려면 워드프레스 댓글 템플릿 함수 페이지를 참고해서 도전해 보세요.

워드프레스 2.7 이후의 댓글 출력 환경

워드프레스 2.7 이후부터 거의 모든 댓글 출력 환경이 API화 되었다. 다른 이유보다는 계단형 댓글, 페이지로 나뉘는 댓글을 지원하기 위함이 가장 큰 게 아닌가 생각된다. 이제는 특별한 플러그인 없이도 이러한 기능들을 쓸 수 있다니 정말 반가운 일이 아닐 수 없다.

다만, 사용중인 테마가 새로운 댓글 출력 환경을 지원해야만 한다는 어쩔 수 없는 단점이 있다. 물론, 취향에 따라 자주 테마를 바꾸는 블로거들도 많지만, 본인과 같이 한번 정하면 어지간하면 테마를 바꾸지 않는 경우도 많을 것이다. 이러한 경우 욕심을 버리고 종전처럼 새로운 기능들을 제외하고 블로그를 운영한다면 문제가 되지 않겠지만, 사람의 욕심이란게 있다는걸 알면서 썪혀두기에는 좀 넘치는 경향이 있는 듯 하다.

물론 가장 권장하는 방법은, 해당 테마의 제작자에게 워드프레스 2.7의 댓글 환경을 지원해 줄 것을 요청하거나, 구글 등의 검색엔진에서 ‘테마이름 wordpress 2.7’ 등의 검색어를 통해 누군가 제작 해 놓은 패치를 찾아서 적용하는 것이다.

하지만, 부득이 한 경우나 이번 기회에 한 번 이런 작업에 도전해 보고 싶은 블로거라면 낯선 단어들과 용어들을 살짝 견뎌가면서 함께 해 봤으면 좋겠다.

아래 설명되는 내용은 HTML 이나 PHP에 익숙하지 않은 사람에겐 다소 어려운 것들이겠지만, 이번 기회에 하나 하나 차분히 살펴본다면, 앞으로 워드프레스를 백배 활용하는데 큰 도움이 될거라 자부한다.

우선, Octto씨가 이미 잘 정리해 둔 글이 있으니, 영어에 익숙한 분들께서는 참고하시길 바란다.
Continue reading “워드프레스 2.7 이후의 댓글 출력 환경”

페이지 템플릿에서 댓글을 지원하게 하기

일반적으로 워드프레스의 테마들은 페이지 템플릿에서 댓글을 지원하지 않는 경우가 많다. 일단, default 테마만 봐도 이러한 경우에 속한다.

수정(2010 /01/13): 따로 custom field(사용자 지정값)을 입력하는 방식보다는 단순히 댓글을 열거나 닫는것으로 구분하는것이 더 쉬운듯 하여 그에 맞게 글을 수정함.

물론, 워드프레스에서의 고정 페이지 개념을 생각한다면 당연한 것이겠지만, 가끔 페이지에서도 댓글 기능이 필요할 때가 있다. 방명록 페이지의 경우가 그 대표적인 예가 아닐까 한다.

아래 설명될 내용에서는 워드프레스의 Default 테마를 대상으로 할 것이며, 따로 댓글을 지원하는 페이지 템플릿을 만들기 보다는 기존의 템플릿을 수정하여 댓글을 지원하기도 하고, 안하기도 하도록 하겠다.
Continue reading “페이지 템플릿에서 댓글을 지원하게 하기”