안녕하세요. :)...
contact form을 질문 내용들 참고하여서 커스텀을 하고 있는데요.. php 소스를 몰라서 도움을 요청드립니다 ㅜㅜ!!
우선 다른 게시물들을 참고하여서
contact form으로 문의한 내용의 리스트를 페이지로 뺀것과,
작성자는 비회원자들한테는 **로 숨김처리되는 것,
관리자는 작성자 **이 풀어지는 것 까지 진행하였습니다.
여기서 궁굼한 사항이,
1. 아래 코드를 사용하여 관리자는 작성자 **를 풀어주고, 비회원자들은 **로 보이는건데 이부분에 있어서 원하는 게시판만 적용으로 바꾸고 싶은데 작성 하는 방법을 몰라 도움을 요청합니다 ㅜㅜ..
게시판 id를 작성하는 방법이 여기서 어찌 추가하면 되는가요?
add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
if(!$builder->board->isAdmin()){
$strlen = mb_strlen($user_display, 'utf-8');
if($strlen > 3){
$showlen = 2;
}
else{
$showlen = 1;
}
$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
}
return $user_display;
}
2. 추가한 입력 필드를 검색이 가능하게 변경하고 싶은데, 지금 만들어놓은 필드를 아래와 같이 맨밑에 연락처를 추가한 사항입니다. 근데 검색이 되질 않고 있어서용 ㅜㅜ
어찌하면될까요?
제작하려는건 작성자+연락처를 추가해서 검색폼에 작성자와 연락처를 같이 입력하는 검색 기능이 필요합니다..
<select name="target">
<option value=""><?php echo __('All', 'kboard')?></option>
<option value="title"<?php if(kboard_target() == 'title'):?> selected<?php endif?>><?php echo __('Title', 'kboard')?></option>
<option value="content"<?php if(kboard_target() == 'content'):?> selected<?php endif?>><?php echo __('Content', 'kboard')?></option>
<option value="member_display"<?php if(kboard_target() == 'member_display'):?> selected<?php endif?>><?php echo __('Author', 'kboard')?></option>
<option value="pho_n"<?php if(kboard_target() == '5ee07e45c77fe'):?> selected<?php endif?>>연락처</option>
</select>
http://homs09.cafe24.com/?page_id=252
위에 링크가 테스트를 진행중인 페이지 입니다!
항상 감사드립니당 ㅜㅜ!!
안녕하세요~^^
1. 올려주신 코드를 특정 게시판에만 적용되게 하시려면
올려주신 코드 중 !$builder->board->isAdmin() 부분을
!$builder->board->isAdmin() && $builder->board->id == '1' 이런 식으로 교체해보시겠어요?
1 부분의 숫자는 실제 게시판 id로 적용해주세요.
여러 개의 게시판에 적용하시려면
$builder->board->id == '1' 부분을 in_array($builder->board->id, array('1', '2')) 이런 식으로 적용해주시면 됩니다.
1과 2는 실제 게시판 id로 적용해주세요.
2. KBoard 플러그인에서 입력 필드 검색 방법은
아래의 링크를 참고 부탁드립니다.
KBoard(케이보드) 입력 필드 검색 방법 - 워드프레스 게시판 커스터마이징
고맙습니다.
안녕하세요. 1번 사항은 해결이 되었는데,
2번 사항은 입력필드륻 검색 방법을 보고 진행하였는데도 안되어서요 ㅠㅠ
contact_form editor.php에
form 안에 넣었는데 이게 아닐까용ㅠㅜㅠ?
<form class="kboard-form" method="post" action="<?php echo $url->getContentEditorExecute()?>" enctype="multipart/form-data" onsubmit="return kboard_editor_execute(this);">
<?php $skin->editorHeader($content, $board)?>
<input type="hidden" name="secret" value="true">
<input type="hidden" name="wordpress_search" value="3">
<?php foreach($board->fields()->getSkinFields() as $key=>$field):?>
<?php echo $board->fields()->getTemplate($field, $content, $boardBuilder)?>
<?php endforeach?>
<div class="kboard-attr-row">
<label class="attr-name" for="kboard_option_address">주소</label>
<div class="attr-value"><input type="text" id="kboard_option_address" name="kboard_option_address" value="<?php echo $content->option->address?>"></div>
</div>
<div class="kboard-control">
<div class="left">
<?php if($content->uid):?>
<a href="<?php echo $url->getDocumentURLWithUID($content->uid)?>" class="kboard-contact-form-button-small"><?php echo __('Back', 'kboard')?></a>
<a href="<?php echo $url->set('mod', 'list')->toString()?>" class="kboard-contact-form-button-small"><?php echo __('List', 'kboard')?></a>
<?php elseif($board->isWriter()):?>
<button type="submit" class="kboard-contact-form-button-large">신청하기</button>
<?php endif?>
</div>
<div class="right">
<?php if($content->uid && $board->isWriter()):?>
<button type="submit" class="kboard-contact-form-button-small"><?php echo __('Save', 'kboard')?></button>
<?php endif?>
</div>
</div>
</form>
구조가 다른듯 하여서, editor-fields.php에 넣었는데도 검색이 되질 않습니당 ㅜㅜ
<?php elseif($field['field_type'] == 'text'):?>
<?php if(isset($field['hidden']) && $field['hidden']):?>
<input type="hidden" id="<?php echo esc_attr($meta_key)?>" class="<?php echo esc_attr($required)?>" name="<?php echo esc_attr($fields->getOptionFieldName($meta_key))?>" value="<?php echo $content->option->{$meta_key}?esc_attr($content->option->{$meta_key}):esc_attr($default_value)?>">
<?php else:?>
<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> meta-key-<?php echo esc_attr($meta_key)?> <?php echo esc_attr($required)?>">
<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
<div class="attr-value">
<input type="text" id="<?php echo esc_attr($meta_key)?>" class="<?php echo esc_attr($required)?>" name="<?php echo esc_attr($fields->getOptionFieldName($meta_key))?>" value="<?php echo $content->option->{$meta_key}?esc_attr($content->option->{$meta_key}):esc_attr($default_value)?>"<?php if($placeholder):?> placeholder="<?php echo esc_attr($placeholder)?>"<?php endif?>>
<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
</div>
</div>
<div class="kboard-attr-row">
<label class="attr-name" for="kboard_option_address">연락처</label>
<div class="attr-value"><input type="text" id="5ee07e45c77fe" name="5ee07e45c77fe" value="<?php echo $content->option->{'5ee07e45c77fe'}?>
"></div>
</div>
<?php endif?>
연락처를 추가한 항목이 나오고 있는데 검색해도 데이터가 나오지 않는 상황입니다!
editor.php 파일은 게시글 작성 페이지에 표시되는 코드입니다.
게시글 목록에서 검색하게 하시려면 list.php 파일을 수정해주셔야 합니다.
검색하려는 필드의 메타키가 5ee07e45c77fe라면
본문 내용에 올려주신 코드 중 pho_n 부분을 kboard_option_5ee07e45c77fe 이런 식으로 교체해보시겠어요?
고맙습니다.
안녕하세요.
어찌어찌해서..? 검색은 되는거 같은데..
edittor-fields.php에서
아래와 같이 넣었는데 입력 칸이 잔뜩 생겨버렸어용................................................. 기존에 있는것들에서 연락처라는 항목이 막 생겨버렸는데 아래 코드를 지우고 넣으면 다시 없어지구요 ㅠㅠ
https://imgur.com/b8XqxUJ 이렇게 항목들이 잔뜩 생겨버립니다.
<div class="kboard-attr-row">
<label class="attr-name" for="kboard_option_5ee07e45c77fe">연락처</label>
<div class="attr-value"><input type="text" id="kboard_option_5ee07e45c77fe" name="kboard_option_5ee07e45c77fe" value="<?php echo $content->option->{'5ee07e45c77fe'}?>
"></div>
</div>
해당 코드를 editor-fields.php 파일에 추가하신 이유가 있으신지요?
edittor-fields.php 파일이 스킨 폴더 내에 존재한다면
워드프레스 관리자 페이지에서 입력 필드 설정이 가능합니다.
만약, 관리자 페이지에서 설정한 입력 필드를 커스텀하시려면
edittor-fields.php 파일을 수정하시는 것보다 kboard_get_template_field_html 필터를 사용하시는 걸 권장드립니다.
고맙습니다.
리스트에 수정하여서 연락처 검색과 정리는 좀 되었습니다.
남겨주신 링크로 따라하면서 하고 있는데,
필요한 폼이 리스트에서 작성자 연락처 검색시 리스트에 노출이 되면 되거든요.
https://imgur.com/NpQl6Ct
이렇게 폼으로 잘 나오는데 이번엔 작성자로 검색하면 노출이 되지 않고 연락처만 나오고 있습니당 ㅜㅜ
검색방법은 둘중 하나 입력했을때와 둘다 입력했을때를 생각해서 or로 했고,
작성자가 출력되려면 author 이 값으로 넣어서 쓰면 되는게 아닐까요??
다른 질문들 계속 보면서하다가 아무리 안되어 다시 답글 답니다..
<!-- 검색폼 시작 -->
<div class="kboard-search">
<form id="kboard-search-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()?>
<!-- 옵션 필드 검색 데이터를 초기화 -->
<?php $kboard_search_option = kboard_search_option()?>
<!-- 검색 방법 (AND, OR) -->
<input type="hidden" name="kboard_search_option[relation]" value="OR">
<!-- address 옵션 필드 검색 -->
<input type="hidden" name="kboard_search_option[author][key]" value="author">
<input type="hidden" name="kboard_search_option[author][compare]" value="LIKE">
<input type="hidden" name="kboard_search_option[author][wildcard]" value="both">
<input type="text" name="kboard_search_option[author][value]" value="<?php echo isset($kboard_search_option['Author']['value']) ? $kboard_search_option['author']['value'] : ''?>" placeholder="이름">
<input type="hidden" name="kboard_search_option[5ee07e45c77fe][key]" value="5ee07e45c77fe">
<input type="hidden" name="kboard_search_option[5ee07e45c77fe][compare]" value="LIKE">
<input type="hidden" name="kboard_search_option[5ee07e45c77fe][wildcard]" value="both">
<input type="text" name="kboard_search_option[5ee07e45c77fe][value]" value="<?php echo isset($kboard_search_option['5ee07e45c77fe']['value']) ? $kboard_search_option['5ee07e45c77fe']['value'] : ''?>" placeholder="연락처(-없이)">
<button type="submit" class="kboard-contact-form-button-small"><?php echo __('Search', 'kboard')?></button>
</form>
</div>
<!-- 검색폼 끝 -->
말씀하신 작성자는 KBoard 게시글 작성자를 말씀하시는 건지요?
이전 댓글에 안내해드린 링크의 코드에도 적용되어 있지만
작성자는 name 값이 target이며 value 값은 member_display로 적용되어 있습니다.
확인해보시겠어요?
고맙습니다.
계속 귀찮게 질문드려 죄송합니다 ^^;; 도움 감사드려요 ㅜㅜ
근데 제가 php는 아예 몰라서 이렇게 저렇게 시도해봐도 안되네요
작성자가 글 작성하는 사람이 맞구요.
<input type="hidden" name="kboard_search_option[member_display][key]" value="member_display">
<input type="hidden" name="kboard_search_option[member_display][compare]" value="LIKE">
<input type="hidden" name="kboard_search_option[member_display][wildcard]" value="both">
<input type="text" name="kboard_search_option[member_display][value]" value="<?php echo isset($kboard_search_option['member_display']['value']) ? $kboard_search_option['member_display']['value'] : ''?>" placeholder="이름">
여기에서
작성자는 name 값이 target이며 value 값은 member_display로 적용되어 있습니다.라는 부분으로 적용한다면
<input type="hidden" name="target" value="both">
<input type="text" name="target" value="<?php echo isset($kboard_search_option['member_display']['value']) ? $kboard_search_option['member_display']['value'] : ''?>" placeholder="이름">
이렇게 변동하면 된다는 말씀이실까용 ㅜㅜ?
커뮤니티에서 저희가 모든 코드를 일일이 봐드리는 건 현실적으로 불가능합니다.
또한 직접 코드를 수정하실 경우
어떤 상황인지 저희 쪽에서 파악이 어렵기 때문에 도움을 드리는 데 한계가 있습니다.
원하시는 기능을 구현하기 위해서는 PHP 코드와
워드프레스 내장 함수에 대한 이해가 필요합니다.
KBoard 플러그인에서 작성자명 검색은
게시판주소/?mod=list&pageid=1&target=member_display&keyword=작성자명
이런 식으로 적용됩니다.
그렇기 때문에 target 쪽 값에는 member_display가 적용되어야 하고
keyword가 실제 검색하려는 작성자명입니다.
위 내용을 참고하셔서 코드 수정해보시겠어요?
고맙습니다.