주소 필드 두개 생성시 작동하게 하는 법

안녕하세요 매번 감사합니다!!

 

https://blog.cosmosfarm.com/archives/214/kboard-%ec%bc%80%ec%9d%b4%eb%b3%b4%eb%93%9c-%ea%b2%8c%ec%8b%9c%ed%8c%90%ec%97%90-%ec%83%88%eb%a1%9c%ec%9a%b4-%ed%95%84%eb%93%9c-%ec%b6%94%ea%b0%80%ed%95%98%ea%b8%b0/

 

이 글을 보면서 주소 입력필드 추가를 했는데요, 

저는 주소 입력창을 두개를 넣어서 주소를 두개 받아 오고 싶어요

그래서 아래와 같이 첫번째 filter 의 함수에 한 if(isset!){~~} 부분을 하나 더 추가해보았습니다.

add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
function my_kboard_skin_fields($fields, $board){
	
	if($board->id == '2'){
		
		if(!isset($fields['address'])){
			$fields['address'] = array(
				'field_type' => 'address',
				'field_label' => '주소',
				'class' => 'kboard-attr-text',
				'hidden' => '',
				'meta_key' => '',
				'field_name' => '',
				'permission' => '',
				'roles' => '',
				'default_value' => '',
				'placeholder' => '',
				'required' => '',
				'show_document' => '',
				'description' => '',
				'close_button' => 'yes'
			);
		};
		
				if(!isset($fields['address2'])){
			$fields['address2'] = array(
				'field_type' => 'address',
				'field_label' => '주소2',
				'class' => 'kboard-attr-text',
				'hidden' => '',
				'meta_key' => '',
				'field_name' => '',
				'permission' => '',
				'roles' => '',
				'default_value' => '',
				'placeholder' => '',
				'required' => '',
				'show_document' => '',
				'description' => '',
				'close_button' => 'yes'
			);
		}
	}
	
	return $fields;
}

 

이렇게 하니까 입력필드가 두개가 뜨긴하는데, 두번째 우편번호/주소찾기를 눌러서 주소를 선택해도 첫번째에 적용이 됩니다.

어떻게 수정하면 될까요?? 

kboard_get_template_field_html

kboard_document_add_option_value_field_html 여기도 각각 추가를 해야하나요??

field_type 또한 달라야하나요?? field_type은 둘다 주소형식으로 같으니까 같게해서 같은 form이 뜨게 한다고 생각해서 같게 했습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    field_type 또한 서로 달라야 하며

    kboard_postcode_address_search 함수도

    kboard_postcode_address_search1 이런 식으로 적용해주셔야 할 듯합니다.

    기존 kboard_postcode_address_search 함수에서 실제 주소를 필드에 입력하고 있습니다.

    입력 필드의 id를 잘 확인하셔서 적용해보시겠어요?

    고맙습니다.

  • 안녕하세요 감사합니다.

    field_type을 수정한 후에 두번째 필터를 저런식으로 수정해보았습니다.

    하지만 여전히 안되네요 ㅠㅠ 

    filter를 하나의 필드마다  따로 등록해야하는것인가요??

     

    
    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'] == 'address'){
    		
    		wp_enqueue_script('daum-postcode', 'https://spi.maps.daum.net/imap/map_js_init/postcode.v2.js', array(), '', true);
    		
    		ob_start();
    		?>
    		<div class="kboard-attr-row">
    			<label class="attr-name" for="kboard_option_postcode">우편번호/주소</label>
    			<div class="attr-value">
    				<input type="text" id="kboard_option_postcode" name="kboard_option_postcode" value="<?php echo $content->option->postcode?>" placeholder="우편번호..." style="width:100px">
    				<input type="text" id="kboard_option_address" name="kboard_option_address" value="<?php echo $content->option->address?>" placeholder="주소...">
    				<button type="button" class="kboard-default-button-small" onclick="kboard_postcode_address_search()">우편번호/주소 검색</button>
    			</div>
    		</div>
    		<script>
    		function kboard_postcode_address_search(){
    			var width = 500;
    			var height = 600;
    			new daum.Postcode({
    				width: width,
    				height: height,
    				oncomplete: function(data){
    					jQuery('#kboard_option_postcode').val(data.zonecode);
    					jQuery('#kboard_option_address').val(data.roadAddress);
    					
    					setTimeout(function(){
    						jQuery('#kboard_option_address').focus();
    					});
    				}
    			}).open({
    				left: (screen.availWidth-width)*0.5,
    				top: (screen.availHeight-height)*0.5
    			});
    		}
    		</script>
    		<?php
    		$field_html = ob_get_clean();
    	}
    	
    	
    	if($field['field_type'] == 'address2'){
    		
    		wp_enqueue_script('daum-postcode', 'https://spi.maps.daum.net/imap/map_js_init/postcode.v2.js', array(), '', true);
    		
    		ob_start();
    		?>
    		<div class="kboard-attr-row">
    			<label class="attr-name" for="kboard_option_postcode">우편번호/주소</label>
    			<div class="attr-value">
    				<input type="text" id="kboard_option_postcode1" name="kboard_option_postcode1" value="<?php echo $content->option->postcode?>" placeholder="우편번호..." style="width:100px">
    				<input type="text" id="kboard_option_address1" name="kboard_option_address1" value="<?php echo $content->option->address?>" placeholder="주소...">
    				<button type="button" class="kboard-default-button-small" onclick="kboard_postcode_address_search1()">우편번호/주소 검색</button>
    			</div>
    		</div>
    		<script>
    		function kboard_postcode_address_search1(){
    			var width = 500;
    			var height = 600;
    			new daum.Postcode({
    				width: width,
    				height: height,
    				oncomplete: function(data){
    					jQuery('#kboard_option_postcode1').val(data.zonecode);
    					jQuery('#kboard_option_address1').val(data.roadAddress);
    					
    					setTimeout(function(){
    						jQuery('#kboard_option_address1').focus();
    					});
    				}
    			}).open({
    				left: (screen.availWidth-width)*0.5,
    				top: (screen.availHeight-height)*0.5
    			});
    		}
    		</script>
    		<?php
    		$field_html = ob_get_clean();
    	}
    	
    	
    	
    	return $field_html;
    }

     

  • 안녕하세요.

    올려주신 코드처럼 하나의 필터에 여러 개의 입력 필드를 설정해주셔도 됩니다.

    kboard_skin_fields 필터에 추가하신 주소2 필드의

    field_type을 address2로 교체해서 확인해보시겠어요?

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

    필드 초기화를 하신 후에 테스트해보세요.

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기