안녕하세요.
KBoard 를 아주 잘 사용하고 있는 개발자입니다.
KBoard 어제 업그레이드했는데요,
잘되던 추가 필드 기능이 안되고 있어요~^^;
사용자들이 꽤 많이 사용하는 게시판인데요...
스킨을 새로 만들었구요, 제가 추가한 스킨의 editor.php 코드는 다음과 같습니다..
<tr>
<th>작성자</th>
<?php if(!$content->title) : //제목이 없다는 것은 처음 작성하는 경우임
{
$current_user = wp_get_current_user();
$content->option->name = $current_user->user_firstname;
$key = 'job';
$single = true;
$content->option->job = get_user_meta( $current_user->ID, $key, $single );
$key1 = 'organ';
$single = true;
$content->option->organ = get_user_meta( $current_user->ID, $key1, $single );
}
endif ?>
<td>
<!--input name="kboard_option_name" title="작성자" value="<?= $content->option->name; ?>" type="text" readonly="readonly" class="input_write check" style="width:90%; height:31px"-->
<input type="text" name="kboard_option_name" title="작성자" value="<?= $content->option->name; ?>" class="input_write check" style="width:90%; height:31px">
</td>
<!--input 태그 안 넣으면 이 값들이 저장이 안된다~! 삭제하면 안됨!!!-->
<th>소속기관</th>
<td>
<!--input name="kboard_option_job" title="소속" value="<?= $content->option->job; ?>" type="text" readonly="readonly" class="input_write check" style="height:31px">
<input name="kboard_option_organ" title="기관" value="<?= $content->option->organ; ?>" type="text" readonly="readonly" class="input_write check" style="height:31px"-->
<input name="kboard_option_organ" title="기관" value="<?= $content->option->organ; ?>" type="text" class="input_write check" style="height:31px">
</td>
</tr>
-> 현재 작성자 필드와 소속, 기관 필드 모두 아무런 내용도 나오지 않습니다.
그리고 $current_user->user_firstname 값 또는 get_user_meta( $current_user->ID, $key, $single ) 값을 표시해보면 잘 나옵니다~!
어제까지는 잘 되었었는데요...
왜그런지 확인 부탁드립니다...
참고로 URL은 http://www.cubictek.co.kr/customer/qna/ 입니다.
PS) 생각해보니
필드 값의 초기 값이 표시가 안되는거네요~
사용자 id 값을 알아내어 작성자 이름으로 아예 처음부터 보여주게 코딩했는데요
이전 버전에선 이 초기값 설정이 표시되었는데 업그레이드한 휴에는 초기값 설정이 안 먹어요~
해당 필드에 값 입력하면 저장은 됩니다~
감사합니다~! ^^
코드 수정해봤습니다.
아래 코드로 테스트 해보시겠어요?
<tr>
<th>작성자</th>
<?php if(!$content->title) : //제목이 없다는 것은 처음 작성하는 경우임
{
$current_user = wp_get_current_user();
$option_name = $current_user->user_firstname;
$key = 'job';
$single = true;
$option_job = get_user_meta( $current_user->ID, $key, $single );
$key1 = 'organ';
$single = true;
$option_organ = get_user_meta( $current_user->ID, $key1, $single );
}
endif ?>
<td>
<!--input name="kboard_option_name" title="작성자" value="<?php echo $content->option->name ? $content->option->name : $option_name?>" type="text" readonly="readonly" class="input_write check" style="width:90%; height:31px"-->
<input type="text" name="kboard_option_name" title="작성자" value="<?php echo $content->option->name ? $content->option->name : $option_name?>" class="input_write check" style="width:90%; height:31px">
</td>
<!--input 태그 안 넣으면 이 값들이 저장이 안된다~! 삭제하면 안됨!!!-->
<th>소속기관</th>
<td>
<!--input name="kboard_option_job" title="소속" value="<?php echo $content->option->job ? $content->option->job : $option_job?>" type="text" readonly="readonly" class="input_write check" style="height:31px">
<input name="kboard_option_organ" title="기관" value="<?php echo $content->option->organ ? $content->option->organ : $option_organ?>" type="text" readonly="readonly" class="input_write check" style="height:31px"-->
<input name="kboard_option_organ" title="기관" value="<?php echo $content->option->organ ? $content->option->organ : $option_organ?>" type="text" class="input_write check" style="height:31px">
</td>
</tr>
간단히 설명드리면
<?php echo $content->option->name ? $content->option->name : $option_name?>
여기서 $content->option->name 값이 있으면 $content->option->name 값을 출력하고 없다면 $option_name 값이 출력되게 바꿨습니다.
실제 게시글 저장하기 전에는
$content->option 사용이 불가능합니다.
게시글이 없을 때는 실제로 option 값 저장을 할 수 없기 때문입니다.
그래서 $content->option->name 값이 있는지(저장된 값이 있는지) 체크하고 없다면 다른 값을 출력해서
게시글 저장시 option 값도 저장되도록 한 것입니다.
전문적으로 이야기 드리면, KBContent 클래스의 initWithUID 메소드로 게시글 정보가 초기화 되어 있어야 합니다.
게시글 정보의 uid 값이 없다면 option 은 동작하지 않습니다.