pre_get_avatar is a WordPress PHP filter that allows the HTML for a user’s avatar to be returned early. By returning a non-null value, it short-circuits the get_avatar()
function, passing the value through the get_avatar
filter and returning early.
Usage
add_filter('pre_get_avatar', 'your_custom_function', 10, 3); function your_custom_function($avatar, $id_or_email, $args) { // Your custom code here return $avatar; }
Parameters
$avatar
(string|null): HTML for the user’s avatar. Default is null.$id_or_email
(mixed): The avatar to retrieve. Accepts a user_id, Gravatar MD5 hash, user email, WP_User object, WP_Post object, or WP_Comment object.$args
(array): Arguments passed toget_avatar_url()
, after processing.
Examples
Custom Default Avatar
add_filter('pre_get_avatar', 'custom_default_avatar', 10, 3); function custom_default_avatar($avatar, $id_or_email, $args) { if (!$avatar) { $avatar = '<img src="/path/to/your/default/avatar.png" alt="Default Avatar">'; } return $avatar; }
This code snippet sets a custom default avatar when there’s no Gravatar available.
Replace Gravatar with a Local Avatar
add_filter('pre_get_avatar', 'local_user_avatar', 10, 3); function local_user_avatar($avatar, $id_or_email, $args) { // Retrieve the user by ID, email or other input $user = get_user_by('id', $id_or_email); // If the user has a local avatar, use it if ($user && $local_avatar = get_user_meta($user->ID, 'local_avatar', true)) { $avatar = '<img src="' . $local_avatar . '" alt="Local Avatar">'; } return $avatar; }
This code replaces the Gravatar with a local avatar, if it’s set in the user’s metadata.
Use a Custom Image for a Specific User
add_filter('pre_get_avatar', 'custom_avatar_for_user', 10, 3); function custom_avatar_for_user($avatar, $id_or_email, $args) { $user = get_user_by('id', $id_or_email); if ($user && $user->ID === 123) { // Replace 123 with the desired user ID $avatar = '<img src="/path/to/custom/avatar.png" alt="Custom Avatar">'; } return $avatar; }
This code sets a custom avatar for a specific user by ID.
Show Avatars Only for Registered Users
add_filter('pre_get_avatar', 'avatar_for_registered_users', 10, 3); function avatar_for_registered_users($avatar, $id_or_email, $args) { $user = get_user_by('id', $id_or_email); if (!$user) { $avatar = null; } return $avatar; }
This code displays avatars only for registered users and hides them for guests.
Display Avatars Based on User Role
add_filter('pre_get_avatar', 'avatar_based_on_user_role', 10, 3); function avatar_based_on_user_role($avatar, $id_or_email, $args) { $user = get_user_by('id', $id_or_email); if ($user && in_array('administrator', $user->roles)) { $avatar = '<img src="/path/to/admin/avatar.png" alt="Admin Avatar">'; } elseif ($user && in_array('subscriber', $user->roles)) { $avatar = '<img src="/path/to/subscriber/avatar.png" alt="Subscriber Avatar">'; } else { $avatar = null; // Hide avatar for other roles or guests } return $avatar; }
This code displays different avatars based on the user’s role. It shows specific avatars for administrators and subscribers, and hides avatars for other roles or guests.