안녕하세요.
제가 카테고리 기능이나 추가 입력 필드를 이용해서 정보를 입력하는 것까지는 했습니다.
리스트 화면에서 검색을 할 때 현재는 키워드를 입력하는 방식인데, 이것을 아래 이미지대로 체크박스 형태로 선택해서 검색할 수 있도록 수정이 가능할까요?
http://bsdc.co.kr/befor&after/befor&after.php
레퍼런스가 있으면 부탁드리고,
없으시다면 제가 프로그래밍은 조금 할수 있기때문에,
이용할 수 있는 훅이나 쿼리를 수정해야 된다면 수정해야할 파일 위치에 대해서 가이드를 주시면 구현이 가능할 꺼 같습니다.
감사합니다.
네 빠른 답변감사합니다.
kboard_search_option에서 compare 값을 아래처럼 사용할 수 있다고 하는데, in 을 넣으니까 결과값이 나오지가 않네요.
'=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN'
in 사용예시를 말씀주실수 있을까요?
LIKE 넣을 때는 나오는데, 아래처럼 넣으면 안나오네요.
<?php $service = isset($kboard_search_option['service']['value']) ? $kboard_search_option['service']['value'] : '';?>
<input type="hidden" name="kboard_search_option[service][key]" value="service">
<input type="hidden" name="kboard_search_option[service][compare]" value="IN">
<select name="kboard_search_option[service][value]">
<option value="">문의 유형 선택</option>
<option value="앞니">앞니</option>
<option value="윗니">윗니</option>
</select>
그리고 드랍다운일때는 단일 값으로 검색이 되는데, 체크박스 일때 다중 선택이 되면 IN 으로 하면 그에 맞게도 검색이 되는 건가요?
감사합니다.
안녕하세요.
KBoard 입력 필드 검색 시 compare 값을 IN으로 설정했을 때
입력 필드의 값이 한글로 되어 있을 경우 정상적으로 동작하지 않는 문제를 확인하였습니다.
FTP로 접속해서 /wp-content/plugins/kboard/class/KBContentList.class.php 파일에
아래의 코드를 찾아서
if(is_array($option['value'])){
$option['value'] = implode(',', $option['value']);
}
$option_key = isset($option['key']) ? esc_sql(sanitize_key($option['key'])) : '';
$option_value = isset($option['value']) ? esc_sql(sanitize_text_field($option['value'])) : '';
$option_compare = isset($option['compare']) ? esc_sql($option['compare']) : '';
$option_wildcard = isset($option['wildcard']) ? esc_sql($option['wildcard']) : '';
아래의 코드로 교체해보시겠어요?
if(isset($option['value']) && is_array($option['value'])){
$option_value = array();
foreach($option['value'] as $value){
$option_value[] = esc_sql(sanitize_text_field($value));
}
$option_value = "'".implode("','", $option_value)."'";
}
else{
$option_value = isset($option['value']) ? esc_sql(sanitize_text_field($option['value'])) : '';
}
$option_key = isset($option['key']) ? esc_sql(sanitize_key($option['key'])) : '';
$option_compare = isset($option['compare']) ? esc_sql($option['compare']) : '';
$option_wildcard = isset($option['wildcard']) ? esc_sql($option['wildcard']) : '';
/wp-content/plugins/kboard/class/KBOrderHistory.class.php 파일과
/wp-content/plugins/kboard/class/KBOrderSales.class.php 파일에
아래의 코드를 찾아서
if(is_array($condition['value'])){
$condition['value'] = implode(',', $condition['value']);
}
$condition_key = isset($condition['key']) ? esc_sql(sanitize_key($condition['key'])) : '';
$condition_value = isset($condition['value']) ? esc_sql(sanitize_text_field($condition['value'])) : '';
$condition_compare = isset($condition['compare']) ? esc_sql($condition['compare']) : '';
$condition_wildcard= isset($condition['wildcard']) ? esc_sql($condition['wildcard']) : '';
아래의 코드로 모두 교체해보세요.
if(isset($condition['value']) && is_array($condition['value'])){
$condition_value = array();
foreach($condition['value'] as $value){
$condition_value[] = esc_sql(sanitize_text_field($value));
}
$condition_value = "'".implode("','", $condition_value)."'";
}
else{
$condition_value = isset($condition['value']) ? esc_sql(sanitize_text_field($condition['value'])) : '';
}
$condition_key = isset($condition['key']) ? esc_sql(sanitize_key($condition['key'])) : '';
$condition_compare = isset($condition['compare']) ? esc_sql($condition['compare']) : '';
$condition_wildcard= isset($condition['wildcard']) ? esc_sql($condition['wildcard']) : '';
위의 코드는 아래 페이지에서도 확인 가능합니다.
추후 위의 코드를 업데이트에 반영하도록 하겠습니다.
체크박스의 경우에도 IN으로 검색할 수 있습니다.
체크박스는 옵션 값이 여러 개 적용될 수 있기 때문에
아래처럼 배열로 적용해보세요.
<label>
<input type="hidden" name="kboard_search_option[checkbox1][key]" value="checkbox1">
<input type="checkbox" name="kboard_search_option[checkbox1][value][]" value="일"<?php if(isset($kboard_search_option['checkbox1']['value']) && in_array('일', $kboard_search_option['checkbox1']['value'])):?> checked<?php endif?>>
일
<input type="checkbox" name="kboard_search_option[checkbox1][value][]" value="이"<?php if(isset($kboard_search_option['checkbox1']['value']) && in_array('이', $kboard_search_option['checkbox1']['value'])):?> checked<?php endif?>>
이
<input type="hidden" name="kboard_search_option[checkbox1][compare]" value="IN">
</label>
고맙습니다.