지식 DB

상용 서비스를 위한 진짜 워드프레스 정보

ACF로 로컬 아바타 만들기

발행:

| 업데이트:

지식

WP스퀘어의 모든 정보는 국내 상용 서비스를 기준으로 작성됩니다.

ACF와 코드를 이용해 별도 플러그인 없이 로컬 아바타를 만드는 방법입니다.

1) ACF 이미지 필드

코드를 추가하기 전에 반드시 이미지 필드를 먼저 만듭니다. 그렇지 않으면 에러가 납니다.

ACF에서 임의의 이름(예: 프로필 이미지)라른 필드 그룹을 만들고, 이미지 필드를 추가합니다. 여기서는 ‘local_avatar’라는 필드이름을 사용했습니다.

2) PHP 코드 추가

<?php 

add_filter('get_avatar', 'wpsqure_acf_local_avatar', 100000, 5);
function wpsqure_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 값 가져오기, 'wpsqure_local_avatar' 값은 본인이 지정한 필드 이름 으로 변경
    $image_id = get_user_meta($user_id, '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;
}Code language: PHP (php)

3) 테스트

실제로 프로필 편집에서 해당 필드에 이미지를 업로드하고 정상 동작하는 지 확인합니다.

태그

글쓴이

Photo of author

메아쿨파

팀과 함께 워드프레스 관련 자문과 개발을 하고 있습니다. 상용 서비스르를 필요로 하는 기업과 스타트업, 높은 수준의 워드프레스를 만들고 싶은 에이전시, WP스퀘어 필진으로 참여하고 싶으신 분은 문의하기로 남겨 주시기 바랍니다.

댓글

Leave a Comment