날짜
시작시간
종료시간
위의 형태로 추가입력폼을 작성하고싶습니다.
블로그에 기재헤주신 내용을 보고 아래와 같이 테마 내의 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['date'])){
$fields['date'] = array(
'field_type' => 'date',
'field_label' => '대관일',
'class' => 'kboard-attr-text',
'hidden' => '',
'meta_key' => '',
'field_name' => '',
'permission' => '',
'roles' => '',
'default_value' => '',
'placeholder' => '',
'required' => '',
'show_document' => '',
'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'] == 'date'){
wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_script('jquery-timepicker', KBOARD_URL_PATH . '/template/js/jquery.timepicker.js', array(), KBOARD_VERSION);
wp_enqueue_style('jquery-flick-style', KBOARD_URL_PATH.'/template/css/jquery-ui.css', array(), '1.12.1');
wp_enqueue_style('jquery-timepicker', KBOARD_URL_PATH.'/template/css/jquery.timepicker.css', array(), KBOARD_VERSION);
ob_start();
?>
<div class="kboard-attr-row">
<label class="attr-name" for="kboard_option_start_date"><?php echo __('Start date', 'kboard-cross-calendar')?><span class="attr-required-text">*</span></label>
<div class="attr-value">
<div class="calendar-event-start-date-set">
<input type="text" class="datepicker" id="kboard_option_date" name="kboard_option_date" value="<?php echo $content->option->date?>" title="날짜" readonly>
<input type="text" class="timepicker" name="kboard_option_time" maxlength="5" value="<?php echo $content->option->time1?>" title="대관시작" placeholder="대관시작">
<input type="text" class="timepicker" name="kboard_option_time" maxlength="5" value="<?php echo $content->option->time2?>" title="대관종료" placeholder="대관종료">
</div>
</div>
</div>
<script>
jQuery(document).ready(function(){
jQuery('.datepicker').datepicker({
closeText : '닫기',
prevText : '이전달',
nextText : '다음달',
currentText : '오늘',
monthNames : [ '1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월' ],
monthNamesShort : [ '1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월' ],
dayNames : [ '일', '월', '화', '수', '목', '금', '토' ],
dayNamesShort : [ '일', '월', '화', '수', '목', '금', '토' ],
dayNamesMin : [ '일', '월', '화', '수', '목', '금', '토' ],
weekHeader : 'Wk',
dateFormat : 'yy-mm-dd',
firstDay : 0,
isRTL : false,
duration : 0,
showAnim : 'show',
showMonthAfterYear : true,
yearSuffix : '년'
});
jQuery('.timepicker').timepicker({'timeFormat':'H:i'});
});
</script>
<?php
$field_html = ob_get_clean();
}
return $field_html;
}
안녕하세요~^^
우선, 올려주신 코드 중 아래의 코드를 찾아서
<input type="text" class="timepicker" name="kboard_option_time" maxlength="5" value="<?php echo $content->option->time1?>" title="대관시작" placeholder="대관시작">
<input type="text" class="timepicker" name="kboard_option_time" maxlength="5" value="<?php echo $content->option->time2?>" title="대관종료" placeholder="대관종료">
아래의 코드로 교체해주세요.
<input type="text" class="timepicker" name="kboard_option_time1" maxlength="5" value="<?php echo $content->option->time1?>" title="대관시작" placeholder="대관시작">
<input type="text" class="timepicker" name="kboard_option_time2" maxlength="5" value="<?php echo $content->option->time2?>" title="대관종료" placeholder="대관종료">
기존의 코드로 적용하시면 name이 같기 때문에
데이터가 정상적으로 저장 또는 표시가 되지 않습니다.
KBoard 플러그인 kboard_document_add_option_value_field_html 필터를 사용하시면
게시글 본문 페이지에 표시되는 입력 필드를 편집하실 수 있습니다.
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
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($html, $field, $content, $board){
if($board->id == '1'){ // 실제 적용될 게시판 ID 값으로 변경해주세요.
$meta_key = (isset($field['meta_key'])&&$field['meta_key']) ? $field['meta_key'] : '';
if($meta_key == 'date'){
$html = '<div class="kboard-document-add-option-value meta-key-' . esc_attr($meta_key) . '"><span class="option-name">' . $field['field_name'] . '</span> : ';
$html .= " {$content->option->date} <span class=\"option-name\">대관시작</span> : {$content->option->time1} <span class=\"option-name\">대관종료</span> : {$content->option->time2}</div><hr>";
}
}
return $html;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.
고맙습니다.
답변 감사드립니다. 작성해주신 코드를 넣어봤는데 여전히 본문 영역에는 노출이 되지 않네요... ㅜㅜ
(입력필드는 정확하게 노출이 되고 있습니다. )
function.php 파일 말고 추가해야 할 부분이 있을까요?
입력 필드 설정 중 게시글 본문에 표시 체크박스에 체크되어 있는지요?
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력필드 설정 탭에서
추가하신 대관일 필드 쪽에서 확인해보시겠어요?
또, 대관일 필드의 메타키가 date로 되어있는지도 확인해보세요.
만약, 다른 메타키로 되어있다면
안내해드린 코드 중 $meta_key == 'date' 부분을 실제 메타키로 적용해보시겠어요?
고맙습니다.
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력필드 설정 탭에서 date로 설정 되어있고,
출력 코드에도 동일하게 설정 되어있습니다.
위의 내용 확인후에도 노출이 안된다면 다른 방법으로 무엇을 시도해보면 좋을까요?
비회원으로도 테스트해볼 수 있는 페이지 주소 알려주시면
도움 드릴 방법을 찾아보겠습니다.
고맙습니다.