[워드프레스] KBoard 게시판의 게시글 정렬 방식 바꾸기

개요

KBoard를 사용하여 게시판을 운영하면 기본적으로 게시글은 최신 글이 먼저 표시(Descending)됩니다. 시간 순서를 바꾸거나 게시글의 제목을 기준으로 가나다(ABC) 순으로 정렬하거나 반대로 정렬하기를 원할 경우가 있을 수 있습니다.

KBoard에서는 이 경우에 사용할 수 있는 필터로 kboard_list_orderby 필터를 제공합니다. 케이보드와 관련된 모든 action과 filter는 여기에서 확인이 가능합니다.

게시판 글 목록을 과거글부터 정렬 (추가)

게시판의 목록을 글번호와 함께 과거글이 맨 위로 가도록 정렬하고 싶은 경우가 있습니다.

아래의 코드를 추가하시면 작성일을 기준으로 정렬이 됩니다.

add_filter('kboard_list_orderby','my_kboard_list_orderby', 10, 3);
function my_kboard_list_orderby($order, $board_id, $content_list){
if(in_array($board_id, array('1', '2'))){
$order = "`date` DESC";
}
return $order;
}

// 출처: Cosmosfarm

위의 코드는 KBoard 게시판 플러그인에 기본적으로 적용되어 있으며 정렬을 변경하시려면 위의 코드에서 DESC 부분을 ASC로 변경하면 됩니다.

게시글 번호 표시는 워드프레스 관리자 페이지 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 기본설정 페이지에서 리스트 게시글 번호 표시 설정으로 변경 가능합니다.

게시글의 제목을 기준으로 정렬하기

예를 들어 kboard_list_orderby 필터를 사용하여 게시글의 제목을 기준으로 알파벳 역순(가나다 역순)으로 배열할 수 있습니다.

워드프레스 KBoard 게시판 정렬 변경하기만약 새로운 필드를 하나 추가한 후에 그 필드 순서에 따라 정렬하려면 이 글의 답변에 나와있는 방법에 따라 조금 복잡한 방법으로 KBoard 코어 파일을 수정해야 합니다.

어느 경우든 코어 파일을 수정하는 것은 바람직하지 않습니다. 나중에 업데이트가 되면 다시 수정 부분을 확인하여 다시 수정해주어야 합니다. (시간이 지나면 어떤 부분을 수정했는지 기억하여 다시 수정하는 게 쉽지 않을 수도 있습니다.)

만약 새로운 필드를 추가하여 그 필드값을 기준으로 정렬해야 한다면, 케이보드 코어 파일을 수정하지 않으려면 다음과 같은 방법도 가능할 것입니다. (개인적인 아이디어이지만 구현하는 데 별 문제는 없을 것 같습니다.)

  1. 제목을 새로운 값(예: 논문번호)을 추가하는 용도로 사용합니다. editor.php 파일에서 라벨을 "제목'에서 "논문번호"(혹은 원하는 제목)로 수정하면 사용자가 새로운 필드의 값으로 추가하지만 실제로는 title 필드에 추가됩니다.
  2. 새로운 필드를 추가하고 타이틀은 "제목"으로 지정합니다.
  3. list.php와 document.php에서 새롭게 추가한 필드 값이 제목 부분에 오도록 적절히 수정하고 title 필드($content->title)로 받은 새로운 값(예: 논문번호)도 적절한 곳에 표시되도록 소스 파일을 수정합니다.
  4. kboard_list_orderby 필터를 사용하여 title 기준으로 정렬하면 원하는 방식대로 게시판 글이 정렬됩니다.

최대한 쉽게 설명하려고 노력했는데 논리적으로 설명했는지 모르겠네요. 혹시 이 문제로 고민한다면 아래에 댓글을 남겨주시면 더 자세히 설명하기 위해 노력하겠습니다. 이러한 작업을 수행하려면 Kboard에서 필드를 자유롭게 추가하고 수정할 수 있어야 합니다. 그리고 filter에 대해서도 이해하고 있어야 합니다. 아래의 참고 글들이 도움이 될 것입니다.

부록: 게시판 번호를 역순으로 표시하려면

참고로 게시판 번호가 역순으로 표시되도록 하려면 /kboard/class/KBContentList.class.php 파일을 수정해야 합니다.

public function index(){
return $this->index--;
}

위 코드를 아래 코드처럼 변경해보세요:

public function index(){
$this->index--;
return $this->total - $this->index;
}
// Source: 코스모스팜

참고

 


댓글 남기기

* 이메일 주소는 공개되지 않습니다.