추가입력필드로 시간 선택폼을 넣고싶습니다.

날짜

시작시간

종료시간

 

위의 형태로 추가입력폼을 작성하고싶습니다. 

블로그에 기재헤주신 내용을 보고 아래와 같이 테마 내의 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로 설정 되어있고, 

    출력 코드에도 동일하게 설정 되어있습니다. 

    위의 내용 확인후에도 노출이 안된다면 다른 방법으로 무엇을 시도해보면 좋을까요? 

  • 비회원으로도 테스트해볼 수 있는 페이지 주소 알려주시면

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

    고맙습니다.

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