안녕하세요 매번 감사합니다!!
이 글을 보면서 주소 입력필드 추가를 했는데요,
저는 주소 입력창을 두개를 넣어서 주소를 두개 받아 오고 싶어요
그래서 아래와 같이 첫번째 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 -> 게시판 목록 -> 게시판 선택 -> 입력필드 설정 탭에서
필드 초기화를 하신 후에 테스트해보세요.
고맙습니다.