contact form 검색창 입력폼 추가

안녕하세요. :)...

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가 실제 검색하려는 작성자명입니다.

    위 내용을 참고하셔서 코드 수정해보시겠어요?

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기