간단히 만들어봤습니다.
게시판 스킨 list.php 파일에 검색 코드를 추가해주세요.
/wp-content/plugins/kboard/skin/사용중인스킨/list.php 파일입니다.
추가하신 입력 필드의 name 값과 이름 등을 써주세요.
<select name="target">
<option value=""><?php echo __('All', 'kboard')?></option>
<option value="title"<?php if(kboard_target() == 'title'):?> selected="selected"<?php endif?>><?php echo __('Title', 'kboard')?></option>
<option value="content"<?php if(kboard_target() == 'content'):?> selected="selected"<?php endif?>><?php echo __('Content', 'kboard')?></option>
<option value="member_display"<?php if(kboard_target() == 'member_display'):?> selected="selected"<?php endif?>><?php echo __('Author', 'kboard')?></option>
<option value="kboard_option_newfield"<?php if(kboard_target() == 'kboard_option_newfield'):?> selected="selected"<?php endif?>>새로운필드</option>
</select>
그 다음 테마의 functions.php 파일에 아래 코드를 추가해주세요.
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
function my_kboard_list_where($where, $board_id, $content_list){
global $wpdb;
$skin_option_prefix = 'kboard_option_';
$key = kboard_target();
if(strpos($key, $skin_option_prefix) !== false){
$key = sanitize_key(str_replace($skin_option_prefix, '', $key));
$value = kboard_safeiframe(kboard_xssfilter(kboard_keyword()));
$key = esc_sql($key);
$value = esc_sql($value);
$where = "`board_id`='$board_id' AND `uid` IN (SELECT `content_uid` FROM `{$wpdb->prefix}kboard_board_option` WHERE `option_key`='$key' AND `option_value` LIKE '%{$value}%') AND `notice`='' AND `parent_uid`='0' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
}
return $where;
}
일부 버그나 속도가 느린 등 문제가 있을 수 있습니다.
차후 업데이트에서 최적화된 기능을 추가하도록 하겠습니다.
--
예전에 제가 올린 글에 대한 답변글인데 이제서야 확인후 작업해보았지만..
생각처럼 잘 안되네요..
그 다음 테마의 functions.php 파일에 아래 코드를 추가해주세요. <<- 코드를 넣으면.. 화면이 500 에러가 뜹니다..
기본이 워낙 없으니..ㅜㅜ 스스로 해결할 능력이 안되네요..
그리고..
현재 전체/제목/작성자/ 이런식으로 검색이 되는데 ..
그냥 작성자나 필드추가된 내용이 전체에서 검색이 가능하면 됩니다.
/kboard/class/KBContentList.class.php 파일 보시면
getList() 메소드 쪽에 아래 코드가 있습니다.
else if($keyword && !$search) $where[] = "(`title` LIKE '%$keyword%' OR `content` LIKE '%$keyword%')";
이 부분이 전체검색 부분입니다.
else if($keyword && !$search) $where[] = "(`title` LIKE '%$keyword%' OR `content` LIKE '%$keyword%' OR `member_display` LIKE '%$keyword%')";
이렇게 코드를 추가하면 작성자도 검색이 될겁니다^^
--
다른 질문에 위의 내용이 있는데... 필드추가된 것도 이런식으로 가능한가요?
앗 저는 저 답변대로 넣어서 전체를 했을때는 안나오고; 추가한 필드를 선택했을때 나오기는 하는 것 같아요!
전체 검색은 제목+내용 검색입니다.
전체 검색에서 입력 필드까지 검색하게 된다면 서버 부하가 상당할 겁니다.
올려드린 코드에는 아직 문제를 발견하지 못했습니다.
추가한 필드 검색은 kboard_board_option 테이들을 검색해야 하기 때문에 member_display 컬럼처럼 추가한다고 동작하지 않습니다.
현재 관련 기능을 다음 업데이트에서 사용할 수 있도록 기능 개발중에 있습니다.
500 에러가 나는것은 파일 수정이 잘못된 듯합니다.
에디터는 어떤걸 사용하시는지요?
Notepad++ 에디터를 추천드려요.
한글도 되고 사용법이 간단합니다.