YAOHAIXIAO.COM

HTML(5),CSS(3),JavaScript,DOM,Ajax,JSON,Front-end technologies & Yaohaixiao

热门标签:JavaScript Performance 前端开发 前端性能优化 原创

Rss

Home » WordPress » 利用 get_comment_author_email() 函数获得 Gravatar 评论图像路径

利用 get_comment_author_email() 函数获得 Gravatar 评论图像路径

WordPress 中我们想获得评论中的 Gravatar 图像,一般使用 get_avatar() 函数,例如:

get_avatar($comment,$size='32',$default='http://www.gravatar.com/avatar/be385381854ec020acbfd856b085bc0f?s=32&d=mm&r=g', get_comment_author())

但是只要细心一些的前端开发的朋友都知道,get_avatar() 函数读取的 Gravatar 评论图片是保存在 gravatar.com 网站上的远程的图片。这样直接加载远程站点的图片对前端的性能是会有影响的。于是在我最新版本的 BlueNight 主题中,我使用了 lazyload 来处理这个问题。我需要先输出一张网站本地的 Gravatar 图像,然后 lazyload 加载用户在 gravatar.com 网站上设置的头像。这个时候我就只需要头像的路径了,而不能使用 get_avatar() 函数直接输出头像了。那么,我们怎样才能获得用户在 gravatar.com 设置的头像的路径呢?我们首先还是先来了解一下 Gravatar。

什么是 Gravatar

Gravatar 是 Globally Recognized Avatars (地球人公认的阿凡达),可以去 gravatar.com 设置关联你的 Email 和头像,这样在任何启用 Gravatar 的博客留言(例如:WordPress),即可显示对应的头像了。

Gravatar 头像路径的构建方式

这里就是一个默认的 Gravatar 图片 src 地址:

http://www.gravatar.com/avatar/be385381854ec020acbfd856b085bc0f?s=32&d=mm&r=g

我们来分析一下,Gravatar 总是以如下URL开头:

http://www.gravatar.com/avatar/

接下去是 E-mail 对应的 Hash 结果, E-mail 地址在 hash 之前必须要小写,且没有有空格

be385381854ec020acbfd856b085bc0f

然后是 rating 分级, 有[ G | PG | R | X ] 4档,在网站设置头像的时候会建议选G(更具体的分级介绍,去 gravatar.com 玩一下就知道了):

&r=g

最后是 size 图像尺寸 , 有效范围是1~512,我的例子里设置的32的大小。

&s=80

另外一个参数为可选的默认头像地址。在 E-mail 找不到对应的头像了或者不在分级范围内,就用这张默认图。可选参数为:

  • ‘404’ (返回 a 404)
  • ‘mm’ (mysteryman)
  • ‘identicon’ (unique, generated image)
  • ‘monsterid’ (unique, generated image)
  • ‘wavatar’ (unique, generated image)

WordPress 给我们提供了获取用户评论邮箱帐号的函数:get_comment_author_email()。那么,我们要自己获得 Gravatar 头像的路径,就应该这么处理:

http://www.gravatar.com/avatar/'.md5(strtolower(get_comment_author_email())).'&s=32&d=mm&r=g

使用 get_comment_author_email() 函数获得用户评论时填写的 E-mail 地址,然后用 strtolower() 函数将字符都转成小写,最后利用 md5() 产生正确的 Hash 值。搞定了!

声明:本文采用BY-NC-SA协议进行授权。转载请注明转自:利用 get_comment_author_email() 函数获得 Gravatar 评论图像路径

« »

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Spamcheck Enabled)