회원정보 필드 값이 글수정하면 사라집니다.

안녕하세요.

한참을 찾아도 못찾아 질문 드립니다.

회원정보에서 미리입력한 값이 있는 경우 게시판에서 잘 표시해주지만

회원정보에서 미리 입력한 값이 없어서 게시판에서넣었을 경우, document 화면에서 잘 보이는데 글수정하면 값이 사라져 있습니다.

또 회원정보의 미리 값이 아닌 다른 값을 넣었을 경우도 document에서는 잘 보이지만 글수정시 다른 값이 아닌 미리 넣은 값만 보여줍니다.

미리 입력한 값이 없거나, 다른 값을 넣었을때 글수정시 그 값을 불러올수 있을까요?

editor:

<td><?php $billing_phone = $content->option->billing_phone ? $content->option->billing_phone : get_user_meta(get_current_user_id(), 'billing_phone', true)?>
                <input type="text" id="billing_phone_r" name="kboard_option_billing_phone_r" value="<?php echo $billing_phone?>" placeholder="<?php echo $billing_phone?>" style="width:90%" required>
            </td>

docuemnt:

<td><?php echo $content->option->billing_phone_r; ?></td>

 

 

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • <?php 
        $user_info = get_userdata(get_current_user_id()); 
        $user_email = $user_info->user_email;
    ?>

    위 코드 자리에 아래 코드를 사용해보시겠어요?

    <?php 
        $user_info = get_userdata(get_current_user_id()); 
        $current_user_email = $user_info->user_email;
        $user_email = $content->option->user_email_r ? $content->option->user_email_r : $current_user_email;
    ?>
    

    고맙습니다.

  • 아.. value 값에 <?php echo $content->option->billing_phone_r; ?> 넣었더니 해결되네요

  • 같은 질문을 계속 드려 죄송합니다.

    <?php $user_info = get_userdata(get_current_user_id());
          $user_email = $user_info->user_email;?>
                    <input type="email" id="user_email_r" name="kboard_option_user_email_r" value="<?php echo $user_email?>" placeholder="<?php echo $user_email?>" style="width:90%" required>
    
    
    
    <?php echo $content->option->user_email_r; ?>

    위와 같이 작성하였을때 작성자의 이메일을 잘 불러오고 저장완료 후 작성자가 글수정시 작성자의 이메일로 잘 적혀집니다.

    근데 다른 사람, 예를 들어 관리자가 그 글을 수정하려고 하면, 관리자의 이메일이 들어가게 됩니다.

    처음 작성자의 이메일로 고정시킬수 없을까요?

  • 감사합니다 선생님! 더위 조심하세요

  • $user_email_r 부분을 $user_email로 교체해보세요.

    변수명을 잘 확인해주셔야 합니다.

    고맙습니다.

  • 선생님 한번 도와주세요 ㅜ

    get_userdata 활용하여, 다음과 같이 짰는데 불러오질 않습니다.

    지식이 없어 이리저리 대입해보고 있지만 쉽지 않네요..

     

    editor : 
    
    <?php $user_info = get_userdata(get_current_user_id());
          $user_email_r = $user_info->user_email;?>
                    <input type="email" id="user_email_r" name="kboard_option_user_email_r" value="<?php echo $user_email?>" placeholder="<?php echo $user_email?>" style="width:90%" required>
    
    document :
    
    <?php echo $content->option->user_email_r; ?>

     

  • 워드프레스 사이트에서 사용자 이메일을 가져오시려면

    get_user_meta 함수 대신 get_userdata 함수를 활용해보시겠어요?

    get_userdata 함수에 대한 자세한 내용은

    아래 링크를 참고해보세요.

    https://developer.wordpress.org/reference/functions/get_userdata/

    고맙습니다.

  • 오.. 해결되었습니다 선생님!

    하나만 더 여쭙겠습니다

    위와 같은 방식으로 입력하니 다 잘 되는데 이메일만 wp-members 메타키를 못찾아오는거 같습니다.

    editor:
    
    <?php $user_email = $content->option->user_email_r ? $content->option->user_email_r : get_user_meta(get_current_user_id(), 'user_email', true)?>
                    <input type="text" id="user_email_r" name="kboard_option_user_email_r" value="<?php echo $user_email?>" placeholder="<?php echo $user_email?>" style="width:90%" required>
    
    document:
    
    <?php echo $content->option->user_email_r; ?>

     

  • 안녕하세요.

    <input> 태그의 name이 kboard_option_billing_phone_r로 되어 있기 때문에

    올려주신 코드 중 $content->option->billing_phone 부분은

    $content->option->billing_phone_r로 모두 교체해주셔야 할 듯합니다.

     

    그리고, 입력 필드의 값이 없으면 get_user_meta 쪽의 값이 적용되고

    입력 필드의 값이 있으면 해당 값으로 표시되게 하시려면

    $billing_phone 변수를 활용하시면 가능할 듯합니다.

     

    올려주신 코드 중 아래의 코드를 찾아서

    value="<?php echo $content->option->billing_phone_r; ?>"

    아래의 코드로 교체해보세요.

    value="<?php echo $billing_phone?>"

    고맙습니다.

  •  

    wp-members 의 메타값을 먼저 읽어오고 작성자가 먼저 읽어온 내용을 수정하고 저장하엿을때 그 글을 다시 수정버튼 누를때 wp-members 값이 아닌 글쓴이가 저장한 시점에 값을 불러오는 코드는 도움이 필요합니다 ㅠ

  • 익스플로어에서 계속 페이지가 refresh 되는 현상은

    $(document).ready(function(){
        $("select").change(function(){
            $(this).find("option:selected").each(function(){
                var optionValue = $(this).attr("value");
                if(optionValue){
                    $(".box").not("." + optionValue).hide();
                    $("." + optionValue).show();
                } else{
                    $(".box").hide();
                }
            });
        }).change();
    });

    위 스크립트 사용하면 나오는거 같습니다. 셀릭트 값에 따라 display 인데 코멘트창을 지우면 문제가 없더군요

    둘이 같이 코드에 있으면 계속 refresh 됩니다.

  • <td><?php $billing_phone = $content->option->billing_phone ? $content->option->billing_phone : get_user_meta(get_current_user_id(), 'billing_phone', true)?>
                    <input type="text" id="billing_phone_r" name="kboard_option_billing_phone_r" value="<?php echo $content->option->billing_phone_r; ?>" placeholder="<?php echo $billing_phone?>" style="width:90%" required>
                </td>
    
    
    
    <td><?php echo $content->option->billing_phone_r; ?></td>

    위와 같이 코드를 짤 경우 익스플로어 에서는 페이지가 계속 refresh  되는 오류가 있고

    크롬/익스플로어 모두 정보수정에서 미리 입력된 place holder 값이 있어도 값을 입력하라 합니다.

     

    코드를 어떻게 짜야하나요..

    내 정보수정에서 입려된 메타 값 (wp-members)을 먼저 표기하고, 사용자가 새로운 값을 넣었을 경우 그 글을 수정했을때 마지막으로 저장된 값을 불러오려고 합니다.

    Ediot value 에서 그 값을 잡으니 메타값하고 충돌이 생기는거 같습니다. // place holder 가 있는데도 값을 입력하라 하는건 이해가 안되네요;;

     

    도움 부탁드립니다.

  • 안녕하세요~^^

    해결하셨다니 다행입니다 ㅎㅎ

    프로그램 코드를 올려야 할 경우 에디터의 코드 스니펫 삽입 기능을 사용해주시길 부탁드립니다.

    코드 스니펫 삽입 기능으로 코드를 올려주시면 가독성이 좋아집니다.

    고맙습니다.

  • 감사합니다 선생님 완벽히 구현됩니다!

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