다른 곳에서도 아바타 변경할 수 있게 하기 위해
add_shortcode('show_avatar','show_avatar');
function show_avatar(){
global $wpdb;
$current_user = wp_get_current_user();
if(isset($_POST['cosmosfarm_members_avatar_nonce']) && wp_verify_nonce($_POST['cosmosfarm_members_avatar_nonce'], 'cosmosfarm_members_avatar')){
$file_handler = get_cosmosfarm_members_file_handler();
$upload_file = $file_handler->upload_avatar('cosmosfarm_members_avatar_file');
if($upload_file){
$cosmosfarm_members_avatar = get_user_meta($current_user->ID, 'cosmosfarm_members_avatar', true);
if($cosmosfarm_members_avatar){
$upload_dir = wp_upload_dir();
@unlink("{$upload_dir['basedir']}{$cosmosfarm_members_avatar}");
}
update_user_meta($current_user->ID, 'cosmosfarm_members_avatar', $upload_file['url']);
}
}
echo '<div class="cosmosfarm-members-form">';
echo '<div class="profile-header"><form id="cosmosfarm_members_avatar_form" method="post" enctype="multipart/form-data">';
echo wp_nonce_field('cosmosfarm_members_avatar', 'cosmosfarm_members_avatar_nonce');
echo '';
echo '<div class="avatar-img"><label for="cosmosfarm_members_avatar_file" title="' . __('Change Avatar', 'cosmosfarm-members') . '">' .get_avatar(get_current_user_id(), '400'). '<p class="change-avatar-message">' . __('Change Avatar', 'cosmosfarm-members') . '</p><input type="file" name="cosmosfarm_members_avatar_file" id="cosmosfarm_members_avatar_file" multiple="false" accept="image/*" onchange="cosmosfarm_members_avatar_form_submit(this)"></label></div>';
echo '</form></div>';
echo '</div>';
}
다른 글을 참고하여 만들었습니다. submit 되면서 get_avatar로 정상적으로 가져와집니다. **파일 업로드시에 "이미지 파일을 업로드해주세요" 라는 문구가 두번 뜨면서 변경이 됩니다.**
알림이 두번 왜 뜨는건지 모르겠습니다 ㅠㅠ
안녕하세요~^^
올려주신 코드만으로는 원인을 파악하기 어렵습니다.
해당 코드를 저희 쪽 테스트 서버에 추가하고
새로운 페이지를 만들어 [show_avatar] 숏코드를 삽입한 후
아바타 업데이트 테스트를 해보니 정상적으로 동작하는 것을 확인했습니다.
직접 코드를 만들어서 활용하시는 경우
저희 쪽에서 정확한 내용을 파악하기 어렵기 때문에 답변을 드리는 데 한계가 있습니다.
고맙습니다.