체크박스 항목 중 하나를 직접입력 할 수 있나요?

 

안녕하세요. 문의드릴게 있는데요

체크박스 항목들 중에서 하나를 '기타' 로 하고 기타를 체크하면 사용자들이 텍스트를 직접 입력할 수 있게 할수 있나요?

ex

공사종료 : ㅁ신축 ㅁ재건축 ㅁ리모델링 ㅁ기타 : ____________

 

위에 처럼 보여지고, 기타를 체크하면 오른쪽에 텍스트를 기입할 수 있는지 답변 부탁드려요 ㅠㅠ

 

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

    사용 중이신 KBoard 플러그인 버전과 스킨에 따라서

    적용 방법이 다를 수도 있습니다.

    KBoard 플러그인 버전 및 사용 중이신 스킨을 알려주시면

    도움 드릴 방법을 찾아보겠습니다.

    고맙습니다.

  • 플러그인 버전은 가장 최근 꺼(5.4.2)이고, 

    스킨은 기본 default 스킨 입니다!!

  • KBoard 내장 필터를 활용해서 예제 코드를 작성해봤습니다.

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    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['end_construction'])){
    			$fields['end_construction'] = array(
    				'field_type' => 'end_construction',
    				'field_label' => '공사종료',
    				'class' => 'kboard-attr-text',
    				'hidden' => '',
    				'meta_key' => '',
    				'field_name' => '',
    				'permission' => '',
    				'roles' => '',
    				'default_value' => '',
    				'placeholder' => '',
    				'required' => '',
    				'show_document' => '1',
    				'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'] == 'end_construction'){
    		$fields = $board->fields();
    		ob_start();
    		?>
    		<div class="kboard-attr-row">
    			<label class="attr-name">공사종료</label>
    			<div class="attr-value">
    				<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="신축"<?php if($fields->isSavedOption($content->option->end_construction, '신축')):?> checked<?php endif?>> 신축</label>
    				<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="재건축"<?php if($fields->isSavedOption($content->option->end_construction, '재건축')):?> checked<?php endif?>> 재건축</label>
    				<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="리모델링"<?php if($fields->isSavedOption($content->option->end_construction, '리모델링')):?> checked<?php endif?>> 리모델링</label>
    				<label class="attr-value-label"><input type="checkbox" name="kboard_option_end_construction[]" value="기타"<?php if($fields->isSavedOption($content->option->end_construction, '기타')):?> checked<?php endif?>> 기타</label>
    				<label class="attr-value-label"> : <input type="text" name="kboard_option_end_construction_etc" value="<?php echo $content->option->end_construction_etc?>"></label>
    			</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'] == 'end_construction'){
    		$end_construction = is_array($content->option->end_construction) ? implode(',', $content->option->end_construction) : $content->option->end_construction;
    		$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'], "$end_construction : {$content->option->end_construction_etc}");
    	}
    	
    	return $value_html;
    }

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

     

    만약, 글쓰기 페이지에 표시되지 않는다면

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

    변경 사항 저장 버튼을 누르신 후 확인해보시겠어요?

     

    위의 코드는 아래 링크에서도 비슷한 예제를 확인해보실 수 있습니다.

    KBoard(케이보드) 게시판에 새로운 필드 추가하기

    고맙습니다.

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기