1. 정확한 제품 또는 플러그인 이름
default
2. 상세 내용
<div class="kboard-search">
<div class="kboard-option">
<form id="kboard-option-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
<input type="hidden" name="kboard_search_option[relation]" value="and">
<?php $option = kboard_search_option();?>
<!--시간-->
<div class="time">
<span>시간</span>
<div class="timeBox">
<div class="flex-box">
<label>
<input type="hidden" name="kboard_search_option[checkboxtime1][key]" value="checkboxtime1">
<input type="checkbox" name="kboard_search_option[checkboxtime1][value]" value="1" onchange="this.form.submit()"<?php if(isset($option['checkboxtime1']['value']) && $option['checkboxtime1']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime1][compare]" value="=">9시~
</span>
</label>
<label>
<input type="hidden" name="kboard_search_option[checkboxtime2][key]" value="checkboxtime2">
<input type="checkbox" name="kboard_search_option[checkboxtime2][value]" value="2" onchange="this.form.submit()"<?php if(isset($option['checkboxtime2']['value']) && $option['checkboxtime2']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime2][compare]" value="=">10시~
</span>
</label>
</div>
</div>
</div>
</form>
</div>
</div>
9시와 10시가 있는데 a는 9시 b는 9시와 10시 두개의 옵션이 설정되어있습니다.
저 코드에서는 9시와 10시를 선택하면 10시 옵션이 없는 a는 검색조건에서 제외가 되어 보이지 않는데
단 한개의 조건이라도 맞으면 모두 검색 되게 하려면 어떻게 해야할까요?
3. 확인 가능한 상세 페이지 주소
https://balletzip.com
4. 수정한 코드 내역 (있다면)
안녕하세요~^^
코드를 올려주실 때는 코드스니펫을 통해 코드를 작성해주세요.
올려주신 코드만 봤을 때는 wildcard 부분이 빠진 듯 합니다.
아래 코드와 링크를 참고하여 코드를 수정해보시겠어요?
<input type="hidden" name="kboard_search_option[checkboxtime1][wildcard]" value="both">
고맙습니다.
말씀해주신 부분이 span안에 input 에 추가하면 되는걸까요?
추가했는데 기존에 검색되던 것도 검색이 되지 않습니다..
어느 부분에 추가를 하는게 맞는걸까요?
<div class="kboard-search">
<div class="kboard-option">
<form id="kboard-option-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
<input type="hidden" name="kboard_search_option[relation]" value="and">
<?php $option = kboard_search_option();?>
<!--시간-->
<div class="time">
<span>시간</span>
<div class="timeBox">
<div class="flex-box">
<label>
<input type="hidden" name="kboard_search_option[checkboxtime1][key]" value="checkboxtime1">
<input type="checkbox" name="kboard_search_option[checkboxtime1][value]" value="1" onchange="this.form.submit()"<?php if(isset($option['checkboxtime1']['value']) && $option['checkboxtime1']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime1][compare]" value="=">9시~
<input type="hidden" name="kboard_search_option[checkboxtime1][wildcard]" value="both">
</span>
</label>
<label>
<input type="hidden" name="kboard_search_option[checkboxtime2][key]" value="checkboxtime2">
<input type="checkbox" name="kboard_search_option[checkboxtime2][value]" value="2" onchange="this.form.submit()"<?php if(isset($option['checkboxtime2']['value']) && $option['checkboxtime2']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime2][compare]" value="=">10시~
<input type="hidden" name="kboard_search_option[checkboxtime2][wildcard]" value="both">
</span>
</label>
</div>
</div>
</form>
</div>
</div>
남겨주신 링크에 접속하여 확인 해보니
이해가 조금 어려운 부분이 있습니다.
옵션 필드를 검색하는 기본적인 형태인
아래의 코드로 해본 결과
TEST라는 게시글에 AAA라는 옵션에서 1, 2 라는 값이 있을 때
AAA 옵션 검색 필드에 1만 검색해도 TEST라는 게시글이 검색되는 것을 확인하였습니다.
<form id="kboard-search-form-<?php echo $board->id?>" method="get" action="<?php echo esc_url($url->toString())?>">
<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
<?php $kboard_search_option = kboard_search_option()?>
<input type="hidden" name="kboard_search_option[AAA][key]" value="AAA">
<input type="hidden" name="kboard_search_option[AAA][compare]" value="LIKE">
<input type="text" name="kboard_search_option[AAA][value]" value="<?php echo isset($kboard_search_option['AAA']['value']) ? $kboard_search_option['AAA']['value'] : ''?>" placeholder="AAA 옵션 필드 검색">
<input type="hidden" name="kboard_search_option[BBB][key]" value="BBB">
<input type="hidden" name="kboard_search_option[BBB][compare]" value="LIKE">
<input type="text" name="kboard_search_option[BBB][value]" value="<?php echo isset($kboard_search_option['BBB']['value']) ? $kboard_search_option['BBB']['value'] : ''?>" placeholder="BBB 옵션 필드 검색">
<button type="submit" class="kboard-default-button-small"><?php echo __('Search', 'kboard')?></button>
</form>
작성해주신 코드는 메타키가 모두 다르게 되어있는데
그렇다면 각 시간대별로 메타기가 모두 다른 상태인건가요?
글을 쓸 때 각 선택 필드가 어떻게 되어 있는지와
메타키가 어떻게 되어있는지 알려주시겠어요?
고맙습니다.
메타키는 각각 다른 값으로 입력이 된 상태 입니다.
<label>
<input type="hidden" name="kboard_search_option[checkboxtime1][key]" value="checkboxtime1">
<input type="checkbox" id="checkboxtime1" name="kboard_search_option[checkboxtime1][value]" value="1" onchange="this.form.submit()"<?php if(isset($option['checkboxtime1']['value']) && $option['checkboxtime1']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime1][compare]" value="=">9시~
</span>
</label>
<label>
<input type="hidden" name="kboard_search_option[checkboxtime2][key]" value="checkboxtime2">
<input type="checkbox" id="checkboxtime2" name="kboard_search_option[checkboxtime2][value]" value="2" onchange="this.form.submit()" <?php if(isset($option['checkboxtime2']['value']) && $option['checkboxtime2']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime2][compare]" value="=">10시~
</span>
</label>
<label>
<input type="hidden" name="kboard_search_option[checkboxtime3][key]" value="checkboxtime3">
<input type="checkbox" id="checkboxtime3" name="kboard_search_option[checkboxtime3][value]" value="3" onchange="this.form.submit()" <?php if(isset($option['checkboxtime3']['value']) && $option['checkboxtime3']['value']):?> checked<?php endif?>>
<span>
<input type="hidden" name="kboard_search_option[checkboxtime3][compare]" value="=">11시~
</span>
</label>
이런 형태로 선택할 수 있는 시간 옵션을 09시부터 22시까지 list.php에 추가하였고,
editor.php에
<div class="kboard-attr-row">
<div class="attr-name">시간</div>
<div class="attr-value">
<label for="checkboxtime1"><input type="hidden" name="kboard_option_checkboxtime1" value=""><input type="checkbox" value="1" name="kboard_option_checkboxtime1" id="checkboxtime1"<?php if($content->option->checkboxtime1 == '1') { ?> checked<?php } ?>>9시~</label>
<label for="checkboxtime2"><input type="hidden" name="kboard_option_checkboxtime2" value=""><input type="checkbox" value="2" name="kboard_option_checkboxtime2" id="checkboxtime2"<?php if($content->option->checkboxtime2 == '2') { ?> checked<?php } ?>>10시~</label>
<label for="checkboxtime3"><input type="hidden" name="kboard_option_checkboxtime3" value=""><input type="checkbox" value="3" name="kboard_option_checkboxtime3" id="checkboxtime3"<?php if($content->option->checkboxtime3 == '3') { ?> checked<?php } ?>>11시~</label>
</div>
</div>
이런식으로 각각의 옵션값을 넣었습니다.
a,b,c 라는 게시글에 공통으로 포함되는 옵션
ex) a 게시물 9시, b 게시물 9시, 10시, c 게시물 10시 라고 옵션 설정을 하였을 때 체크박스에서 9시와 10시를 선택하면 9시와 10시라는 옵션을 가진 게시물 3개가 모두 검색 되게 하고싶습니다.
포함되지 않은 게시물은 검색되지 않는 상태입니다.
해당 방식으로 홈페이지에 적용된 옵션을 검색하기에는
DB 테이블 컬럼수가 과도하게 증가되기도 하고
주소창에서 표현되는 최대 텍스트 길이를 초과할 여지가 있습니다.
kboard_list_where 필터를 사용하여
조건에 맞게 아예 새로 불러오는게 좋을 듯 합니다.
아래 예제 코드를 참고하여 코드를 작성해보시겠어요?
https://www.cosmosfarm.com/threads/document/44096
코드를 작성하기 어려우시면
프로젝트 의뢰에 자세한 내용을 작성해보세요.
https://www.cosmosfarm.com/project
고맙습니다.