안녕하세요. 문의드릴게 있는데요
체크박스 항목들 중에서 하나를 '기타' 로 하고 기타를 체크하면 사용자들이 텍스트를 직접 입력할 수 있게 할수 있나요?
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 -> 게시판 목록 -> 게시판 선택 -> 입력필드 설정 탭에서
변경 사항 저장 버튼을 누르신 후 확인해보시겠어요?
위의 코드는 아래 링크에서도 비슷한 예제를 확인해보실 수 있습니다.
고맙습니다.