안녕하세요.
한참을 찾아도 못찾아 질문 드립니다.
회원정보에서 미리입력한 값이 있는 경우 게시판에서 잘 표시해주지만
회원정보에서 미리 입력한 값이 없어서 게시판에서넣었을 경우, 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 가 있는데도 값을 입력하라 하는건 이해가 안되네요;;
도움 부탁드립니다.
안녕하세요~^^
해결하셨다니 다행입니다 ㅎㅎ
프로그램 코드를 올려야 할 경우 에디터의 코드 스니펫 삽입 기능을 사용해주시길 부탁드립니다.
코드 스니펫 삽입 기능으로 코드를 올려주시면 가독성이 좋아집니다.
고맙습니다.
감사합니다 선생님 완벽히 구현됩니다!