안녕하세요?^^ 코스모스팜 회원관리 플러그인을 사용중입니다.
우커머스와 연동하여, 아래 명령문을 개인정보 페이지 상단에 추가했습니다.
<?php
echo '<div class="avatar-img"><label for="cosmosfarm_members_avatar_file" title="'.__('Change Avatar', 'cosmosfarm-members').'">'.get_avatar(get_current_user_id(), '150').'<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>';
첨부 이미지처럼 프로필은 잘 출력되는데, 아바타변경으로 이미지를 삽입해도 변경이 되질 않습니다.
cosmosfarm_members_avatar_form_submit(this) 라는 함수를 작동시켜야 하는것 같은데..
구현방법을 잘 모르겠어서, 도움을 구하고자 글을 남기게 되었습니다.
혹시 해당페이지에서 동작하는 자바스크립트를 추가해야 된다면, 해당 코드를 여쭤봐도 괜찮을까요?
올 겨울 건강조심하시고 오늘 하루도 행복한하루 보내세요 ^^
감사합니다.
안녕하세요~^^
아래 코드를 functions.php 에 추가해서 해결했습니다.
<? php
function storefront_myaccount_customer_avatar() {
$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(), '150'). '<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>';
}
add_action( 'woocommerce_account_content', 'storefront_myaccount_customer_avatar', 5 );
안녕하세요~^^ 빠른 답변 감사합니다.
앞 뒤로 form 을 빼먹어서 그런것 같군요..
집에 들어가면 수정해보겠습니다!
감사합니다.
안녕하세요~^^
저희도 다른 위치에 적용해본 적이 없기 때문에 확실치는 않습니다.
아래 PHP 코드로 실행되게 해주셔야 할 것 같습니다.
wp_nonce_field('cosmosfarm_members_avatar', 'cosmosfarm_members_avatar_nonce');
또한 자바스크립트 cosmosfarm_members_avatar_form_submit 함수는 반드시 필요한 것은 아니고 form이 실행되게만 해주시면 될 것도 같습니다.
그러나 반드시 테스트해가면서 코드를 고쳐가야 할 것 같습니다.
고맙습니다.