WordPress使用Gravatar头像
导航: 上一页 | 首页 | WordPress中文论坛 | WordPress主机 | CMS程序 | 论坛程序 | ECShop | ShopNC | PowerEasy
使用Gravatar头像[ ]
Gravatar即全球通用头像。这里所说的头像,是用户在论坛、聊天系统、网站或者其它类型的虚拟社区中使用的、与其它用户不同的图标或象征事物。网络头像通常是一个长宽均为80像素的图片,图片内容由用户自行选择。由Tom Werner开发的Gravatar头像系统使用户在所有网站上使用同一个头像成为可能。
日志评论框中的Gravatar头像
Gravatar头像与普通头像几乎没有什么差别,不同的是,所有Gravatar头像都被寄存在一个单独的服务器上,服务器通过调用由MD5算法加密的用户电子邮件地址来帮助获取用户头像。与其在我们常访问的论坛、博客上使用不同的头像,不如注册一个Gravatar头像,在所有网站上使用相同的头像。
要在WordPress中使用Gravatar头像也很容易,可以利用Gravatar WordPress Plugin插件,也可以在index.php, comments.php 以及comments-popup.php模板文件中手动 添加Gravatar头像。
Gravatar头像的构成[ ]
Gravatar头像是从服务器中调用的动态图片资源。下面分片段介绍调用头像时所用的URL地址。URL地址的开始部分是:
http://www.gravatar.com/avatar.php?
紧接着开始部分的是一个强制性参数gravatar_id。参数值即被调用的用户电子邮件地址的十六进制MD5散列表,其中的空格都需要被删除。参数值对大小写不敏感。
gravatar_id=279aa12c3326f87c460aa4f31d18a065
之后是一个可选参数rating,该参数的值可以是G、PG、R或X,这些值决定所返回头像的最高等级。
&rating=R
Gravatar提供不同级别的头像,用户可以自行选择头像级别。
size也是一个可选参数,该参数帮助用户指定Gravatar头像的高度和宽度。size参数值的有效范围是1到80(包括1和80)。如果参数值大于80,原始Gravatar图像会在输出前被缩减取样。
&size=40
在size之后可能是另一个可选参数default。若当前电子邮件地址没有相关联的Gravatar头像,或Gravatar头像级别高于rating参数所规定的头像级别,default参数可规定所返回GIF, JPEG或PNG图片的完全URL、已编码URL以及包含在内的协议。
&default=http%3A%2F%2Fwww.somesite.com%2Fsomeimage.jpg
default之后还有一个可选参数border。border参数规定了覆盖Gravatar头像的1像素边框的十六进制值。参数值可能是六个字符的十六进制字符串(如FF0000表示red),也可能是缩写成三个字符的十六进制字符串(如F00表示red)。
&border=FF0000
在WordPress中使用Gravatar头像[ ]
对大多数来说,用MD5加密邮件地址不是件容易的事,需要在PHP或其它脚本上花费的时间尤其多。有些WordPress插件可以帮助我们完成这个任务,比如Gravatar.com Plugin 和Gravatars2 Enhanced Caching Plugin。插件的安装和用法请见各个插件的说明文档。
自WordPress 2.5起,Gravatar成为WordPress的自带功能,用户无需下载任何插件就可以进行基本使用和管理。
WordPress 2.5在主题开发人员和用户的管理界面中都加入了Gravatar功能。WordPress建议主题开发人员在开发主题时加入Gravatar功能。WordPress用户也可以在管理界面“设置”菜单的“讨论”选项下管理对Gravatar头像的使用。
WordPress用户可以决定:
- 是否显示Gravatar头像
- 所显示的头像级别
WordPress 2.5主题对Gravatar头像的支持
get_avatar函数可将Gravatar头像添加到主题中。该函数返回Gravatar头像的完整的图片HTML标签。
函数调用方式如下:
<?php echo get_avatar( $id_or_email, $size = '96', $default = '<path_to_url>' ); ?>
函数接收的参数包括:
- id_or_email(必需):主题作者的用户ID(整数或字符串),电子邮件地址(字符串)或评论循环中的评论对象。注意:推荐在大多数评论模板中使用$comment,以显示评论者的Gravatar头像。在少数模板中可以用get_the_author_id()。
- size(可选):头像的显示尺寸(最大值为512)
- default(可选):默认Gravatar头像(为没有对应电子邮件地址的评论者所设置的头像)的绝对地址。如果default参数空缺,那么系统会将这个头像将作为默认头像。
下面是一些需要注意的问题:
- 如果不用size参数设置头像大小,默认头像大小为96×96
- 默认头像类型为Gravatar头像
- 只有用户在WP管理面板中激活头像显示选项,头像才能够显示(默认情况下此选项已激活)
- 头像只能根据用户在WP管理面板中规定的头像级别进行相应显示
代码输出:
下面列出的是默认输出内容。在img元素中使用多个类,便于我们进行元素设计。
<img alt= src='http://gravatarurl_or_default' class='avatar avatar-$size' height='$size' width='$size' />
如果由于缺少电子邮件地址(如pingback或trackback),Gravatar头像变成默认头像,无论我们是否指定了默认头像,img元素都会被赋予一个avatar-default CSS类。
向后兼容性
如果希望为WP 2.5之前的版本开发一个支持Gravatar头像的主题,请在代码中加入以下内容以查找Gravatar函数:
if (function_exists('get_avatar')) { echo get_avatar($email); } else { //alternate gravatar code for < 2.5 $grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=" . md5($email) . "&default=" . urlencode($default) . "&size=" . $size; echo "<img src='$grav_url'/>"; }
查找Gravatar头像[ ]
请求Gravatar头像图片但所使用的电子邮件没有注册Gravatar时,Gravatar会返回默认头像以供使用。
但有时我们需要的不止这些,我们可能想知道,自己究竟可不可以获取一个实在的Gravatar头像,还是只能使用默认头像。
如果遇到下列情况:
- 为没有Gravatar头像的访问者使用本地头像
- 告诉访问者他们没有Gravatar头像,建议他们注册一个头像,但同时又不希望打扰已经注册过Gravatar的访问者
警告:以下操作需掌握一定PHP知识。
不巧的是,我们无法只通过一个语句就让Gravatar达到我们希望的效果,无论怎样,它们只能返回图片。解决方法是,在PHP中调用图片,检测图片文件的HTTP页头信息,从该信息中可以判断返回的是Gravatar头像还是默认图片。
下面是一个使用HTTP页头信息的验证函数示例。使用时根据自己的实际需要修改其中的内容:
function validate_gravatar($user_id) { // Mine is just for user_id, you can work out dealing with emails as well for yourself. $user = get_userdata($user_id); // Craft a potential url and test its headers $email = $user->user_email; $hash = md5($email); $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=identicon&r=any&size=80'; $headers = wp_get_http_headers($uri); // Check the headers if (!is_array($headers)) : $has_valid_avatar = FALSE; elseif (isset($headers["content-disposition"]) ) : $has_valid_avatar = TRUE; else : $has_valid_avatar = FALSE; endif; return $has_valid_gravatar; }
相关资料[ ]
- Gravatar
- WordPress插件
- Gravatars Implement Page
- Gravatar Signup Plugin
- Gravatars & WordPress 2.5
- Add Gravatar Support to Your WordPress Comments
- WP Forum post about checking for existence of Gravatars