1. 정확한 제품 또는 플러그인 이름
2. 상세 내용
https://www.cosmosfarm.com/threads/document/35609
제가 질문하고 싶은 내용과 유사한 부분이 많아서 참고하여 코드를 작성했습니다.
1. 게시판에 분류를 추가하기 위해
kboard-sort 부분에 option value 추가하였습니다. (정상적으로 옵션 추가가 되었음)
<div class="kboard-sort">
<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
<option value="가까운 마감날짜 순"<?php if(isset($_GET['kboard_list_sort'])&&$_GET['kboard_list_sort'] == '가까운 마감날짜 순'):?> selected<?php endif?>>가까운 마감날짜 순</option>
<!--<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>-->
</select>
</form>
</div>
2. 가까운 마감날짜 순을 클릭하면 가까운 날짜로 부터 먼 날짜까지 순서대로 정렬이 되어 나타나는 것을 원합니다.
테마 function.php에 해당 코드를 추가하였습니다. 제 게시판은 6번이고, 필드 추가를 한 메타키가 enddate라서 그 부분을 수정해보았습니다.
참고한 글에는 array 부분이 여러개가 되어있던데 저는 하나만 추가해서 저렇게 하나만 써도 되는건지...
이렇게 코드 수정을 하고 '가까운 마감날짜 순' 옵션을 클릭하면 아무 글도 뜨지 않습니다..
어떤 부분에서 오류인지 체크 해주실 수 있을까요?
add_filter('kboard_list_from', 'my_kboard_list_from', 10, 3);
function my_kboard_list_from($from, $board_id, $content_list){
global $wpdb;
if($board_id == '6'){ // 실제 게시판 id로 적용해주세요.
$from .= " LEFT JOIN `{$wpdb->prefix}kboard_board_option` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`{$wpdb->prefix}kboard_board_option`.`content_uid`";
}
return $from;
}
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
function my_kboard_list_where($where, $board_id, $content_list){
global $wpdb;
$option_key = 'enddate';
$kboard_list_sort = isset($_GET['kboard_list_sort'])?$_GET['kboard_list_sort']:'';
if(in_array($kboard_list_sort, array('가까운 마감날짜 순')) && $board_id == '6'){ // 실제 게시판 id로 적용해주세요.
$where .= " AND (`option_key`='{$option_key}' AND `option_value`='{$kboard_list_sort}')";
}
return $where;
}
3. 확인 가능한 상세 페이지 주소
4. 수정한 코드 내역 (있다면)
안녕하세요~^^
쿼리 부분에 정렬하는 코드가 없어서 작동이 안되는것 처럼 보입니다.
아래 링크들을 참고 후 코드를 수정해보시겠어요?
https://www.w3schools.com/sql/sql_orderby.asp
https://www.cosmosfarm.com/threads/document/57455
고맙습니다.
답변 감사합니다!
order_by 필터를 찾아보았는데
제가 추가한 필드가 'enddate'라면 저기 $orderby = 부분에 "'enddate' ASC"로 하는거 맞을까요??
add_filter('kboard_list_orderby', 'my_kboard_list_orderby', 10, 3);
function my_kboard_list_orderby($orderby, $board_id, $content_list){
if($board_id == '6'){
$orderby = "`enddate` ASC";
}
return $orderby;
}