Table of Contents
Description
WordPress currently only allows you to use custom avatars that are uploaded through Gravatar. WP User Avatar enables you to use any photo uploaded into your Media Library as an avatar. This means you use the same uploader and library as your posts. No extra folders or image editing functions are necessary.
WP User Avatar also lets you:
- Upload your own Default Avatar in your WP User Avatar settings.
- Show the user’s Gravatar avatar or Default Avatar if the user doesn’t have a WP User Avatar image.
- Disable Gravatar avatars and use only local avatars.
- Use the
[avatar_upload]
shortcode to add a standalone uploader to a front page or widget. This uploader is only visible to logged-in users. - Use the
[avatar]
shortcode in your posts. These shortcodes will work with any theme, whether it has avatar support or not. - Allow Contributors and Subscribers to upload their own avatars.
- Limit upload file size and image dimensions for Contributors and Subscribers.
Advanced Settings
Visit WP User Avatar for more information and documentation.
Add WP User Avatar to your own profile edit page
You can use the [avatar_upload] shortcode to add a standalone uploader to any page. It’s best to use this uploader by itself and without other profile fields.
If you’re building your own profile edit page with other fields, WP User Avatar is automatically added to the show_user_profile and edit_user_profile hooks. If you’d rather have WP User Avatar in its own section, you could add another hook:
do_action('edit_user_avatar', $current_user);
Then, to add WP User Avatar to that hook and remove it from the other hooks outside of the administration panel, you would add this code to the functions.php
file of your theme:
function my_avatar_filter() {
// Remove from show_user_profile hook
remove_action('show_user_profile', array('wp_user_avatar', 'wpua_action_show_user_profile'));
remove_action('show_user_profile', array('wp_user_avatar', 'wpua_media_upload_scripts'));
// Remove from edit_user_profile hook
remove_action('edit_user_profile', array('wp_user_avatar', 'wpua_action_show_user_profile'));
remove_action('edit_user_profile', array('wp_user_avatar', 'wpua_media_upload_scripts'));
// Add to edit_user_avatar hook
add_action('edit_user_avatar', array('wp_user_avatar', 'wpua_action_show_user_profile'));
add_action('edit_user_avatar', array('wp_user_avatar', 'wpua_media_upload_scripts'));
}
// Loads only outside of administration panel
if(!is_admin()) {
add_action('init','my_avatar_filter');
}
HTML Wrapper
You can change the HTML wrapper of the WP User Avatar section by using the functions wpua_before_avatar
and wpua_after_avatar
. By default, the avatar code is structured like this:
<div class="wpua-edit-container">
<h3>Avatar</h3>
<input type="hidden" name="wp-user-avatar" id="wp-user-avatar" value="{attachmentID}" />
<p id="wpua-add-button">
<button type="button" class="button" id="wpua-add" name="wpua-add">Edit Image</button>
</p>
<p id="wpua-preview">
<img src="{imageURL}" alt="" />
Original Size
</p>
<p id="wpua-thumbnail">
<img src="{imageURL}" alt="" />
Thumbnail
</p>
<p id="wpua-remove-button">
<button type="button" class="button" id="wpua-remove" name="wpua-remove">Default Avatar</button>
</p>
<p id="wpua-undo-button">
<button type="button" class="button" id="wpua-undo" name="wpua-undo">Undo</button>
</p>
</div>
To strip out the div container and h3 heading, you would add the following filters to the functions.php
file in your theme:
remove_action('wpua_before_avatar', 'wpua_do_before_avatar');
remove_action('wpua_after_avatar', 'wpua_do_after_avatar');
To add your own wrapper, you could create something like this:
function my_before_avatar() {
echo '<div id="my-avatar">';
}
add_action('wpua_before_avatar', 'my_before_avatar');
function my_after_avatar() {
echo '</div>';
}
add_action('wpua_after_avatar', 'my_after_avatar');
This would output:
<div id="my-avatar">
<input type="hidden" name="wp-user-avatar" id="wp-user-avatar" value="{attachmentID}" />
<p id="wpua-add-button">
<button type="button" class="button" id="wpua-add" name="wpua-add">Edit Image</button>
</p>
<p id="wpua-preview">
<img src="{imageURL}" alt="" />
<span class="description">Original Size</span>
</p>
<p id="wpua-thumbnail">
<img src="{imageURL}" alt="" />
<span class="description">Thumbnail</span>
</p>
<p id="wpua-remove-button">
<button type="button" class="button" id="wpua-remove" name="wpua-remove">Default Avatar</button>
</p>
<p id="wpua-undo-button">
<button type="button" class="button" id="wpua-undo" name="wpua-undo">Undo</button>
</p>
</div>
Installation
Visit WP User Avatar for more information and documentation.
- Download, install, and activate the WP User Avatar plugin.
- On your profile edit page, click “Edit Image”.
- Choose an image, then click “Select Image”.
- Click “Update Profile”.
- Upload your own Default Avatar in your WP User Avatar settings (optional). You can also allow Contributors & Subscribers to upload avatars and disable Gravatar.
- Choose a theme that has avatar support. In your theme, manually replace
get_avatar
withget_wp_user_avatar
or leaveget_avatar
as-is. Read about the differences here. - You can also use the
[avatar_upload]
and[avatar]
shortcodes in your posts. These shortcodes will work with any theme, whether it has avatar support or not.
Example Usage
Posts
Within The Loop, you may be using:
<?php echo get_avatar(get_the_author_meta('ID'), 96); ?>
Replace this function with:
<?php echo get_wp_user_avatar(get_the_author_meta('ID'), 96); ?>
You can also use the values “original”, “large”, “medium”, or “thumbnail” for your avatar size:
<?php echo get_wp_user_avatar(get_the_author_meta('ID'), 'medium'); ?>
You can also add an alignment of “left”, “right”, or “center”:
<?php echo get_wp_user_avatar(get_the_author_meta('ID'), 96, 'left'); ?>
Author Page
On an author page outside of The Loop, you may be using:
<?php
$user = get_user_by('slug', $author_name);
echo get_avatar($user->ID, 96);
?>
Replace this function with:
<?php
$user = get_user_by('slug', $author_name);
echo get_wp_user_avatar($user->ID, 96);
?>
If you leave the options blank, WP User Avatar will detect whether you’re inside The Loop or on an author page and return the correct avatar in the default 96×96 size:
<?php echo get_wp_user_avatar(); ?>
The function get_wp_user_avatar
can also fall back to get_avatar
if there is no WP User Avatar image. For this to work, “Show Avatars” must be checked in your WP User Avatar settings. When this setting is enabled, you will see the user’s Gravatar avatar or Default Avatar.
Comments
For comments, you might have in your template:
<?php echo get_avatar($comment, 32); ?>
Replace this function with:
<?php echo get_wp_user_avatar($comment, 32); ?>
For comments, you must specify the $comment variable.
Other Available Functions
[avatar_upload] shortcode
You can use the [avatar_upload]
shortcode to add a standalone uploader to a front page or widget. This uploader is only visible to logged-in users. If you want to integrate the uploader into a profile edit page, see Other Notes.
You can specify a user with the shortcode, but you must have edit_user
capability for that particular user.
[avatar_upload user="admin"]
[avatar] shortcode
You can use the [avatar]
shortcode in your posts. It will detect the author of the post or you can specify an author by username. You can specify a size, alignment, and link, but they are optional. For links, you can link to the original image file, attachment page, or a custom URL.
[avatar user="admin" size="medium" align="left" link="file" /]
You can also add a caption to the shortcode:
[avatar user="admin" size="medium" align="left" link="file"]Photo Credit: Your Name[/avatar]
Note: If you are using one shortcode without a caption and another shortcode with a caption on the same page, you must close the caption-less shortcode with a forward slash before the closing bracket: [avatar /]
instead of [avatar]
get_wp_user_avatar_src
Works just like get_wp_user_avatar
but returns just the image src. This is useful if you would like to link a thumbnail-sized avatar to a larger version of the image:
<a href="<?php echo get_wp_user_avatar_src($user_id, 'large'); ?>">
<?php echo get_wp_user_avatar($user_id, 'thumbnail'); ?>
</a>
has_wp_user_avatar
Returns true if the user has a WP User Avatar image. You must specify the user ID:
<?php
if ( has_wp_user_avatar($user_id) ) {
echo get_wp_user_avatar($user_id, 96);
} else {
echo '<img src="my-alternate-image.jpg" />';
}
?>