WordPress zh-tw:使用Gravatar

这是来自WorePress官方网站的备份文章,会翻译这篇文章的灵感来自MyAvatars For MyBlogLog,ㄚ琪一直觉得工作达人的大头贴很怪,然后使用很多的MyBlogLog的WordPress外挂很旧也很怪,有时根本没有作用,所以好好第去了解目前版本的Wordpress的大头贴是怎样的状况。

什么是Gravatar全球认证头像?

大头贴(Gravatars)是Globally Recognized Avatars,一个头像或大头贴是一个使用者在虚拟实境共享的图示或是描述,这个虚拟实境像是论坛、聊天室、网站或任何线上社群的格式,在那里使用者想要有一些东西可以来跟其他人区别,大头贴是由Tom Werner所创立,大头贴让一个人可以在整个网路上使用一个头像,头像通常是80*80的画素大小,使用者必须自行建构。

在部落格文章回响中的Gravatars

大头贴本质上是一样的东西,只是他们全都放在一个单一的伺服器上并且透过MD5演算法则将使用者的email位址编码来呼叫,所以取代你拜访的论坛有一个头像,在另一个你拜访的部落格又是另一个头像,现在你在这两个地方都会有相同的头像了。

大头贴可以很容易地在WordPress用Gravatar WordPress外挂或是手动在index.phpcomments.phpcomments-popup.php样板档案中做修改。

大头贴是如何建构的

大头贴是从伺服器请求来的动态影像资源,请求URL在这里分段来表示,URL总是这样开始:

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

接下来是使用者email位址的杂凑版本,email位址在md5杂凑前,首先要先小写化,接下来移除所有的空格。

279aa12c3326f87c460aa4f31d18a065

另外rating (或r)分级的选项参数有[ G | PG | R | X ] 这些值,可以决定传回的最高分级。

?r=R

选项size (或s)参数可以指定想要的大头贴宽度跟高度,有效值从1到512(包含),任何超过80的尺寸再输出前会让原始的大头贴影像重新使用双三次采样来处理。

&s=120

选项default (或d)参数指定要传回的GIF、JPEG或PNG影像完整的URL、编码的URL、包含的协定,不论请求的email位址没有相关的大头贴又或是大头贴有高于rating参数的分级,他也包含下列其中的一个:

  • ‘404’ (传回404)
  • ‘mm’ (谜样人物)
  • ‘identicon’ (独一自动产生的影像)
  • ‘monsterid’ (独一自动产生的影像)
  • ‘wavatar’ (独一自动产生的影像)
&d=http%3A%2F%2Fwww.somesite.com%2Fsomeimage.jpg

在WordPress中使用大头贴

大头贴的一个例子

对很多人来说,要用MD5将email位址给编码不是件容易事,这种编码需要PHP或其他种的指令码,有几个WordPress外挂可以帮助解决这个工作,像是Gravatar.com外挂Gravatars2 Enhanced Caching Plugin,可以参阅外挂的说明文件有使用跟安装这些WordPress外挂的资讯。

在WordPress 2.5之后,大头贴已经内建了,对于基本的使用跟管理不再需要其它的外挂来做。

WordPress 2.5将布景主题的作者跟临时的WordPress使用者结合在WordPress控制抬来支援大头贴的设定,布景主题的作者有选项可以将大头贴包含在他们的设计中,并且也被建议这样做,WordPress使用者可以在控制台的设定 > 讨论中容易地控制他们的大头贴的使用。

WordPress使用者可以做这样的改变:

  • 大头贴显示与否。
  • 哪种分级的大头贴可以显示。

WordPress 2.5布景主题支援

要新增大头贴到你的布景主题可以这样呼叫:get_avatar,这个函式传回完整的头像影像HTML标签。

函式可以像下列这样的方式呼叫:

  <?php
   echo get_avatar( $id_or_email, $size = '96', $default = '<path_to_url>' );
   ?>

参数:

  • id_or_email (必须):作者的使用者ID (一个整数或字串)、E-mail位址或是评论回圈的评论物件。 注意:为了显示评论者的大头贴你可以在大多数的评论样板中使用$comment,在其他的样板的Loop里 (针对WordPress 2.7以前的版本),你可以使用get_the_author_id() (这在WordPress 2.8已停用),针对WordPress 2.8,请使用get_the_author_meta('user_email')
  • size (选项):大头贴显示的尺寸(最大是512)。
  • default (选项):预设的大头贴使用绝对位置(这在使用者没有email位址时使用),假如保留空白那么你会看到这里的大头贴作为预设用。

这里有一些事项要注意:

  • 假如你没使用size设定尺寸大头贴的预设尺寸是96×96。
  • 预设的大头贴是Gravatar全球认证头像
  • 假如使用者在WP控制台允许使用,那么大头贴就会显示(预设是启用)。
  • 假如使用在在WordPress控制台没有选择分级,那么大头贴就不会分级显示。

程式码输出:

当使用上述的函式时预设的输出列于下,不同的类别用在img元素来帮你使用元素样式。

<img alt='' src='http://gravatarurl_or_default'
class='avatar avatar-$size' height='$size' width='$size' />

假如因为缺乏e-mail位址大头贴回复为预设的影像(例如,pingback或trackback),不论你是否有指定预设值,img元素也会给定一个avatar-default的CSS类别。

回溯相容

假如你想要开发2.5版以前有大头贴的WordPress布景主题,要新增检查Gravatar函式的程式码:

   if (function_exists('get_avatar')) {
      echo get_avatar($email);
   } else {
      //alternate gravatar code for < 2.5
      $grav_url = "http://www.gravatar.com/avatar/" .
         md5(strtolower($email)) . "?d=" . urlencode($default) . "&s=" . $size;
      echo "<img src='$grav_url'/>";
   }

检查大头贴的存在

假如你请求一个大头贴影像但是你在Gravatar系统里没有你的email帐号,那它会传回预设的影像给你。

有时候这可能不是你想要的,你可能就会想知道你是否可以得到一个真正的大头贴或者它只能是预设的。

案例状况:

  • 假如使用者没有大头贴你想要显示当地的头像来使用
  • 你想要警告没有大头贴的使用者他们应该去注册一个,但是你也不想要打扰到已经注册的使用者。

警告:你需要了解PHP来使用下面的资讯。

这样做的技俩就是将”404″指定为预设,在这里假如大头贴不存在大头贴服务会传回404错误,而不是传回一些预设的影像,真正的影像会传回200的程式码,最好是检查传回值是否为200、以及其他错误的传回值。

这里有一个验证的函式使用HTTP headers,你会需要修改它来符合你的需求:

function validate_gravatar($email) {
	// Craft a potential url and test its headers
	$hash = md5($email);
	$uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
	$headers = @get_headers($uri);
	if (!preg_match("|200|", $headers[0])) {
		$has_valid_avatar = FALSE;
	} else {
		$has_valid_avatar = TRUE;
	}
	return $has_valid_avatar;
}

资源