In wordpress, a better way to check if an author has a gravatar or not. Sometimes you might want to check to see if a gravatar exists and not display any image if there isn't one. Uses the wordpress HTTP and caching apis. A better version of this: http://codex.wordpress.org/Using_Gravatars#Checking_for_the_Existence_of_a_Gravatar
/** | |
* Utility function to check if a gravatar exists for a given email or id | |
* @param int|string|object $id_or_email A user ID, email address, or comment object | |
* @return bool if the gravatar exists or not | |
*/ | |
function validate_gravatar($id_or_email) { | |
//id or email code borrowed from wp-includes/pluggable.php | |
$email = ''; | |
if ( is_numeric($id_or_email) ) { | |
$id = (int) $id_or_email; | |
$user = get_userdata($id); | |
if ( $user ) | |
$email = $user->user_email; | |
} elseif ( is_object($id_or_email) ) { | |
// No avatar for pingbacks or trackbacks | |
$allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) ); | |
if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) ) | |
return false; | |
if ( !empty($id_or_email->user_id) ) { | |
$id = (int) $id_or_email->user_id; | |
$user = get_userdata($id); | |
if ( $user) | |
$email = $user->user_email; | |
} elseif ( !empty($id_or_email->comment_author_email) ) { | |
$email = $id_or_email->comment_author_email; | |
} | |
} else { | |
$email = $id_or_email; | |
} | |
$hashkey = md5(strtolower(trim($email))); | |
$uri = 'http://www.gravatar.com/avatar/' . $hashkey . '?d=404'; | |
$data = wp_cache_get($hashkey); | |
if (false === $data) { | |
$response = wp_remote_head($uri); | |
if( is_wp_error($response) ) { | |
$data = 'not200'; | |
} else { | |
$data = $response['response']['code']; | |
} | |
wp_cache_set($hashkey, $data, $group = '', $expire = 60*5); | |
} | |
if ($data == '200'){ | |
return true; | |
} else { | |
return false; | |
} | |
} |
This comment has been minimized.
This comment has been minimized.
Thanks. |
This comment has been minimized.
This comment has been minimized.
Hello! This is a great function however I am encountering a problem because the gravatars are not showing up. Is there any modification that has been made? Sorry I am still a newbie. |
This comment has been minimized.
This comment has been minimized.
I using the function to validate gravatar if the email exist or not. Let me know if you want to view my code... Please help. Thanks! |
This comment has been minimized.
This comment has been minimized.
Yes, THANK YOU! |
This comment has been minimized.
This comment has been minimized.
wow , it is very useful. |
This comment has been minimized.
This comment has been minimized.
Legend!!! Thank you!! |
This comment has been minimized.
This comment has been minimized.
Why use wp_cache instead of wp_transients ?
|
This comment has been minimized.
This comment has been minimized.
Well done, BRAVO! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
This is a great and useful function, thank you for sharing.