Return to Snippet

Revision: 44662
at April 15, 2011 13:31 by camdagr8


Initial Code
function get_avatar_url($id_or_email, $size = '96', $default = '', $alt = false) {
	if (! get_option('show_avatars')) {	return false; }

	if (false === $alt) { $safe_alt = ''; }
	else { $safe_alt = esc_attr($alt); }

	if (!is_numeric($size)) { $size = '96'; }

	$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; }

	if (empty($default)) {
		$avatar_default = get_option('avatar_default');
		if (empty($avatar_default)) { $default = 'mystery'; }
		else { $default = $avatar_default; }
	}

	if (!empty($email)) { $email_hash = md5(strtolower($email)); }

	if (is_ssl()) { $host = 'https://secure.gravatar.com'; }
	else {
		if (!empty($email)) { $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash{0} ) % 2 ) ); }
		else { $host = 'http://0.gravatar.com'; }
	}
	
	if ('mystery' == $default) {
		$default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('[email protected]')
	}
	elseif ('blank' == $default) { $default = includes_url('images/blank.gif'); }
	elseif (!empty($email) && 'gravatar_default' == $default) { $default = ''; }
	elseif ('gravatar_default' == $default) { $default = "$host/avatar/s={$size}"; }
	elseif (empty($email)) { $default = "$host/avatar/?d=$default&s={$size}"; }
	elseif (strpos($default, 'http://') === 0) { $default = add_query_arg('s', $size, $default); }

	if (!empty($email)) {
		$out = "$host/avatar/";
		$out .= $email_hash;
		$out .= '?s='.$size;
		$out .= '&d=' . urlencode($default);

		$rating = get_option('avatar_rating');
		if (!empty($rating)) { $out .= "&r={$rating}"; }

		//$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
		$avatar = $out;
	}
	
	else {
		//$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
		$avatar = $default;
	}

	return $avatar;
}

Initial URL


Initial Description
I pinched the get_avatar() function from the wp/wp-includes/pluggable.php file and commented out the setting of the avatar as an <img> tag and returned the actual image url instead.

Initial Title
Wordpress avatar url

Initial Tags
url, wordpress

Initial Language
PHP