입력필드를 섹션으로 묶기와 개인정보 동의 체크박스 만들기

KBoard 버전 : 게시판 플러그인 5.4.2, 댓글 플러그인 4.5

스킨 : Ask One (최신버전 구매)

게시판 주소 : http://hhh8989.cafe24.com

아래와 캡쳐한 이미지와 같은 형태로 만들고 싶습니다.

질문 1. 글쓰기에서 입력필드를 섹션으로 묶고 타이틀을 넣으려면?

질문 2. Kboard, Ask One 스킨에서 개인정보 동의 체크박스를 만들려면?

 

https://imgur.com/a/fbzWJ9L

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    1. 최신 버전의 KBoard 에스크원 상담 스킨을 사용 중이시라면

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력설정 탭에서

    입력 필드를 설정하실 수 있습니다.

     

    kboard_get_template_field_html 필터를 활용하시면

    KBoard 게시글 작성 페이지에서 표시되는 레이아웃을 편집하실 수 있습니다.

    해당 필터 사용법은

    KBoard(케이보드) 게시판에 새로운 필드 추가하기를 참고해보시겠어요?

     

    2. KBoard 게시판에 개인정보 체크박스를 추가하는 방법은

    아래의 링크를 참고 부탁드립니다.

    KBoard(케이보드) 게시판에 개인정보 동의 체크박스 만들기

    고맙습니다.

  • 답변 감사합니다. 그런데, 1번 답변이 잘 이해가 안갑니다. 새로운 입력필드를 추가하는게 아니라 그냥 기존의 입력필드들을 좀 묶어서 타이틀도 달고 하고 싶은 것인데, 어떻게 해야할지 예제로 간단하게라도 보여주실 수 없는지요?

  • 안녕하세요.

    입력필드를 묶는다는 건 올려주신 이미지의 연락처 필드처럼

    한 개의 필드를 3개로 나눈 후 한 줄에 표시하는 걸 말씀하시는 건지요?

    KBoard(케이보드) 게시판에 새로운 필드 추가하기에 kboard_get_template_field_html 필터를 활용하시면

    게시글 작성 시 표시되는 레이아웃을 편집하실 수 있습니다.

     

     

    예제 코드를 작성해봤습니다.

    아래의 코드를 활용해보시겠어요?

    add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
    function my_kboard_skin_fields($fields, $board){
    	if($board->id == '1'){ // 실제 적용될 게시판 ID 값으로 변경해주세요.
    		if(!isset($fields['phone'])){
    			$fields['phone'] = array(
    				'field_type' => 'phone',
    				'field_label' => '연락처',
    				'class' => 'kboard-attr-text',
    				'hidden' => '',
    				'meta_key' => '',
    				'field_name' => '',
    				'permission' => '',
    				'roles' => '',
    				'default_value' => '',
    				'placeholder' => '',
    				'required' => '',
    				'show_document' => 'true',
    				'description' => '',
    				'close_button' => 'yes'
    			);
    		}
    	}
    	
    	return $fields;
    }
    	
    add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html', 10, 4);
    function my_kboard_get_template_field_html($field_html, $field, $content, $board){
    	if($field['field_type'] == 'phone'){
    		ob_start();
    		?>
    		<div class="kboard-attr-row">
    			<label class="attr-name" for="kboard_option_phone">연락처</label>
    			<div class="attr-value">
    				<input type="text" id="kboard_option_phone" name="kboard_option_phone" value="<?php echo $content->option->phone?>" style="width:100px">
    				<input type="text" id="kboard_option_phone2" name="kboard_option_phone2" value="<?php echo $content->option->phone2?>"  style="width:100px">
    				<input type="text" id="kboard_option_phone3" name="kboard_option_phone3" value="<?php echo $content->option->phone3?>"  style="width:100px">
    			</div>
    		</div>
    		<?php
    		$field_html = ob_get_clean();
    	}
    
    	return $field_html;
    }
    
    add_filter('kboard_document_add_option_value_field_html', 'my_kboard_document_add_option_value_field_html', 10, 4);
    function my_kboard_document_add_option_value_field_html($value_html, $field, $content, $board){
    	if($field['field_type'] == 'phone'){
    		$value_html = sprintf('<div class="kboard-document-add-option-value meta-key-%s"><span class="option-name">%s</span> : %s</div><hr>', $field['field_type'], $field['field_name'], "{$content->option->phone}-{$content->option->phone2}-{$content->option->phone3}");
    	}
    	
    	return $value_html;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.

    코드는 워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에 추가해보시겠어요?

    고맙습니다.

  • 알려주신 예제는 입력필드 1개를 추가하거나, 모양을 변경하는 예제인데,

    제가 말씀드린 것은 다음처럼 입력필드 1, 2, 3, 4, 5, 6을 1, 2와 3, 4, 5, 6 두 섹션으로 나누어서 타이틀을 달아 출력하고 싶다는 의미입니다.

     

    * 섹션 1

    --------------------------------------------------------------

    <제보하기> (타이틀 1)

    --------------------------------------------------------------

    제보대상 유형 (입력필드 1) : 

    제보대상자 (입력필드 2)

    --------------------------------------------------------------

     

    * 섹션 2

    --------------------------------------------------------------

    < 제보자 정보 > (타이틀 2)

    --------------------------------------------------------------

    성명 (입력필드 3)

    연락처 (입력필드 4) :

    이메일 (입력필드 5) :

    회신방법 (입력필드 6) :

    --------------------------------------------------------------

     

    지금 현재 상태는, 워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력설정 탭에서 입력 필드를 설정하면,

    아래와 같이 한 덩어리로 출력됩니다. 이것을 위에 설명한 레이아웃으로 출력하고 싶습니다.

    제보대상 유형 (입력필드 1) : 

    제보대상자 (입력필드 2)

    성명 (입력필드 3)

    연락처 (입력필드 4) :

    이메일 (입력필드 5) :

    회신방법 (입력필드 6) :

  • kboard_skin_field_before_{$meta_key} 액션과 kboard_skin_field_after_{$meta_key} 액션을 활용하시면

    입력 필드의 상단 또는 하단에 원하시는 레이아웃을 표시하실 수 있습니다.

    {$meta_key} 부분에는 실제 필드의 메타키로 적용해보세요.

    제목 입력 필드 위에 문구와 문구 밑에 선을 표시하는 코드를 작성해봤습니다.

    아래의 코드를 활용해보시겠어요?

    add_action('kboard_skin_field_before_title', 'my_kboard_skin_field_before_title', 10, 3);
    function my_kboard_skin_field_before_title($field, $content, $board){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		?>
    		<h3>제보 하기</h3>
    		<hr>
    		<?php
    	}
    }

    위의 코드에서 $board->id == '1' 부분에는 실제 게시판 id로 적용해보세요.

    고맙습니다.

  • 답변 감사합니다. 많은 도움이 되었습니다.

    한가지 더 질문 드리고 싶은데, 입력 필드의 상단에 타이틀을 표시하는 것이 아니라,

    좌측에 표시하고 싶다면 어떻게 해야되는 걸까요? 아래와 같이 말이죠.

    위에서 제가 질문하고 답변주신 내용은, "제보내용"이라는 타이틀을 "제목"입력필드 위에 출력하는 것이었다면,

    이제는 "제보내용"이라는 타이틀을 입력필드 왼쪽에 출력하고 싶은 것인데요.

    방법이 있을까요?

    https://imgur.com/a/bGmR1uM

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요