안녕하세요^^
일단 Kboard를 개발해주셔서 감사드립니다. 잘 사용하고 있습니다~
계층형 카테고리별 공지사항을 다르게 보이고 싶은데 잘되지 않아서 질문드려요~
검색을 통해서
https://www.cosmosfarm.com/threads/document/13928
위와 같은 글을 발견하고 체크해보니 이건 이미 기본적으로 적용이 되어있었지만,
계층형 카테고리가 아닌 일반 카테고리에서만 작동하는것 같습니다.
방법 알려주시면 감사드리겠습니다..^^
안녕하세요~^^
올려주신 코드 중에서
아래의 코드를 찾아서
$this->resource_notice = $wpdb->get_results("SELECT * FROM {$from} WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");
아래의 코드로 교체해보시겠어요?
$this->resource_notice = $wpdb->get_results("SELECT `{$wpdb->prefix}kboard_board_content`.* FROM {$from} WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");
공지사항 계층형 카테고리 검색에 대해서는
추후 연구 개발하여 업데이트하도록 하겠습니다.
고맙습니다.
계층형 카테고리별 공지사항 노출되게 위에 알려주신대로 적용했는데
계층형 카테고리 선택후 조회된 리스트에서 공지사항을 클릭하면 글 상세페이지로 이동하지 않습니다.
(카테고리로 조회하지 않았을때는 공지사항 클릭시 상세페이지로 이동 이상없음)
어느부분에서 잘못된것일까요?
/**
* 공지사항 리스트를 반환한다.
* @return resource
*/
public function getNoticeList(){
global $wpdb;
if(is_array($this->board_id)){
foreach($this->board_id as $key=>$value){
$value = intval($value);
$board_ids[] = "'{$value}'";
}
$board_ids = implode(',', $board_ids);
$where[] = "`board_id` IN ($board_ids)";
}
else{
$this->board_id = intval($this->board_id);
$where[] = "`board_id`='$this->board_id'";
}
if($this->category1){
$category1 = esc_sql($this->category1);
$where[] = "`category1`='{$category1}'";
}
if($this->category2){
$category2 = esc_sql($this->category2);
$where[] = "`category2`='{$category2}'";
}
$from[] = "`{$wpdb->prefix}kboard_board_content`";
$search_option = $this->search_option;
if($search_option){
$multiple_option_query = $this->multipleOptionQuery($search_option);
if($multiple_option_query){
$where[] = $multiple_option_query;
foreach($this->multiple_option_keys as $option_name){
$option_key = array_search($option_name, $this->multiple_option_keys);
$from[] = "INNER JOIN `{$wpdb->prefix}kboard_board_option` AS `option_{$option_key}` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`option_{$option_key}`.`content_uid`";
}
}
}
$from = implode(' ', $from);
$where[] = "`notice`!=''";
// 휴지통에 없는 게시글만 불러온다.
$where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
$this->resource_notice = $wpdb->get_results("SELECT * FROM {$from} WHERE " . implode(' AND ',
$where) . " ORDER BY `date` DESC");
$wpdb->flush();
return $this->resource_notice;
}
말씀하신 것처럼 하시려면 단순히 코드 몇 줄로는 해결되지 않을 듯합니다.
저희도 연구해보고 좋은 방법이 있다면 안내해드리겠습니다.
고맙습니다.
친절한 답변 감사드립니다^^
알려주신대로 작동시켜보면
[계층형 카테고리2]의 공지가
[계층형 카테고리1]에도 나오고, [전체]에도 나오는데
[계층형 카테고리1]은 [우주]이고
[계층형 카테고리2]가 [지구]라면
[지구]의 공지는 [지구]에만 나오고
[우주]만 선택했을때와 [전체]만 선택했을때 안나오게 할수는 없을까요?
물론 [우주](지구를 선택하지않은)의 공지는 또 따로 보여야하구요~
먼저 알려주신 코드는 따로 유형에 맞는 게시판에 잘 쓰도록 하겠습니다^^
바쁘신데 한번만 더 도와주시면 감사드리겠습니다..^^
안녕하세요~^^
공지사항 쪽에 계층형 카테고리 검색을 적용하시려면
FTP로 접속해서 /wp-content/plugins/kboard/class/KBContentList.class.php 파일에
아래의 코드를 찾아서
$where[] = "`notice`!=''";
// 휴지통에 없는 게시글만 불러온다.
$where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
$this->resource_notice = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_board_content` WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");
$wpdb->flush();
아래의 코드로 교체해보시겠어요?
$from[] = "`{$wpdb->prefix}kboard_board_content`";
$search_option = $this->search_option;
if($search_option){
$multiple_option_query = $this->multipleOptionQuery($search_option);
if($multiple_option_query){
$where[] = $multiple_option_query;
foreach($this->multiple_option_keys as $option_name){
$option_key = array_search($option_name, $this->multiple_option_keys);
$from[] = "INNER JOIN `{$wpdb->prefix}kboard_board_option` AS `option_{$option_key}` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`option_{$option_key}`.`content_uid`";
}
}
}
$from = implode(' ', $from);
$where[] = "`notice`!=''";
// 휴지통에 없는 게시글만 불러온다.
$where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
$this->resource_notice = $wpdb->get_results("SELECT * FROM {$from} WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");
$wpdb->flush();
고맙습니다.