업그레이드 후 추가 필드 내용이 표시 안되요~^^;

안녕하세요.

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 은 동작하지 않습니다.

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