I maintain a website with active user registration and a common support question I’m asked is, “How do I change my profile picture?” The answer is not easy as it should be. WordPress’ profile image system is powered by Gravatar, an Automattic owned service. It replaced the old method of uploading a profile picture in WordPress 2.5 “Brecker”.
The longer I maintain the site, the more frustrated I get that Gravatar is the default way users create and manage their profile image. In the past, I’ve written how managing Gravatars in WordPress is a bad user experience and not much has changed. Many of the people requesting support simply want an Upload button or link that enables them to upload an image and use it as their avatar.
One way to replace Gravatar is with the WP User Avatars plugin developed by John James Jacoby. WP User Avatars is part of the Stutter collection of plugins that replaces Gravatar and adds the ability for registered users to upload an image from their machine. Alternatively, users can click the Choose from Media button to choose an image from the Media Library. Existing profile images are preserved.
I tested the plugin on WordPress 4.7.3 and didn’t encounter any issues. It’s worth noting that according to the plugin’s FAQ, it doesn’t work well with multisite.
There has recently been some discussion on a six-year-old trac ticket requesting upload functionality for custom avatars. Some have even suggested that Simple Local Avatars, WP User Avatar or Add Local Avatar could be merged into core to provide the functionality. All three plugins combined are active on nearly 300K sites.
The site I administer is the first I’ve managed in my WordPress career that has open registration. Interacting with registered users who are often new to WordPress has opened my eyes to how bad of an experience configuring an avatar is. Relying on a third-party service as core functionality to manage profile images doesn’t make any sense.
Let us know what your experience is like configuring an avatar in WordPress. If you use a plugin that adds local avatar support, share a link to it in the comments.