您可以使用过滤器get_avatar
为了将所有数据获取到头像,还需要标记内的url。我认为,WP没有一个只返回url的函数,如果是头像图像。
$avatar = "<img alt=\'{$safe_alt}\' src=\'{$default}\' class=\'avatar avatar-{$size} photo avatar-default\' height=\'{$size}\' width=\'{$size}\' />";
apply_filters(\'get_avatar\', $avatar, $id_or_email, $size, $default, $alt);
此外,您还可以在插件或主题中重写此函数,如果此函数名称未在其他位置定义,则此函数仅处于活动状态。
if ( ! function_exists( \'get_avatar\' ) ) :
因此,可以添加一个参数,以便只返回图像的url,如下所示,使用参数
$url
具有
TRUE
你只会得到url。
/**
* Retrieve the avatar for a user who provided a user ID or email address.
*
* @since 2.5
* @param int|string|object $id_or_email A user ID, email address, or comment object
* @param int $size Size of the avatar image
* @param string $default URL to a default image to use if no avatar is available
* @param string $alt Alternate text to use in image tag. Defaults to blank
* @param boolean $url, true for get only the url of the image, no markup
* @return string <img> tag for the user\'s avatar
*/
function get_avatar( $id_or_email, $size = \'96\', $default = \'\', $alt = false, $url = 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( trim( $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(\'unknown@gravatar.com\')
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}";
if ( $url )
$avatar = $out;
else
$avatar = "<img alt=\'{$safe_alt}\' src=\'{$out}\' class=\'avatar avatar-{$size} photo\' height=\'{$size}\' width=\'{$size}\' />";
} else {
if ( $url )
$avatar = $out;
else
$avatar = "<img alt=\'{$safe_alt}\' src=\'{$default}\' class=\'avatar avatar-{$size} photo avatar-default\' height=\'{$size}\' width=\'{$size}\' />";
}
return apply_filters(\'get_avatar\', $avatar, $id_or_email, $size, $default, $alt);
}
另一个小变体是,使用Gravatar规则创建url。
function get_gravatar_url( $email ) {
$hash = md5( strtolower( trim ( $email ) ) );
return \'http://gravatar.com/avatar/\' . $hash;
}
在你的源代码和作者的电子邮件中使用这个,你就可以得到那里图像的url。