사용자 프로필 이미지(로컬 아바타) 기능 만들기
개요
워드프레스는 기본적으로 Gravatar 서비스에 등록된 아바타(프로필 이미지)를 사용합니다. 사이트 자체적인 프로필 이미지를 제공하기 위해서는 해당 기능을 추가로 구현해야 합니다.
선택 가이드
ACF를 사용할 경우 ‘방법 1. ACF 이미지 필드 연동’을, ‘Frontend Admin’ 까지 같이 사용 중이라면 ‘방법 2. Frontend Admin 사용’을 추천합니다. 그렇지 않다면 별도의 플러그인을 사용합니다.
방법 1. ACF 이미지 필드 연동
ACF 에서 새로운 필드 그룹을 생성합니다.
생성은 아래 이미지를 참고하세요.
필드 이름 은 저장시 ‘meta_key’ 값 으로 사용됩니다.

아래 코드를 사용하시는 테마 functions.php 나 스니펫 플러그인으로 삽입하세요
add_filter('get_avatar', 'danbi_acf_local_avatar', 100000, 5);
function danbi_acf_local_avatar( $avatar, $user_idx, $size, $default, $alt ) {
$user = '';
// $user_idx 값으로 사용자 가져오기
if ( is_numeric( $user_idx ) ) {
$id = (int) $user_idx;
$user = get_user_by( 'id' , $id );
} elseif ( is_object( $user_idx ) ) {
if ( ! empty( $user_idx->user_id ) ) {
$id = (int) $user_idx->user_id;
$user = get_user_by( 'id' , $id );
}
} else {
$user = get_user_by( 'email', $user_idx );
}
if ( ! $user ) {
return $avatar;
}
$user_id = $user->ID;
// 저장된 이미지 ID 값 가져오기, 'danbi_local_avatar' 값은 본인이 지정한 필드 이름 으로 변경
$image_id = get_user_meta($user_id, 'danbi_local_avatar', true);
// Bail if we don't have a local avatar
if ( ! $image_id ) {
return $avatar;
}
// 아바타 이미지 가져오기
$image_url = wp_get_attachment_image_src( $image_id, 'thumbnail' );
// Get the file url
$avatar_url = $image_url[0];
// 아바타 이미지 마크업
$avatar = '<img alt="' . $alt . '" src="' . $avatar_url . '" class="gravatar avatar avatar-' . $size . '" height="' . $size . '" width="' . $size . '"/>';
return $avatar;
}