马上就加载好了...
王佳冬中文博客

WordPress恢复显示Gravatar头像的方法

by on Oct 18 , 2010 , under 移动互联 , 478 views , 2 Comments , 网址太长?

细心的朋友应该都发现最近 WordPress 上的Gravatar头像(通用头像)无法在国内显示,原因是 Gravatar 的部分服务器在国内访问困难,今天分享两则解决方案,帮助大家解决这个问题。

方法一:添加GravatarLocalCache插件

此方法仅适用于国外的主机,并且此方法不需要改动wordpress本身的程序,原理是将Gravatar头像缓存至自己的主机上,所以推荐使用这个方法。

在wordpress后台搜索一个“GravatarLocalCache”的插件,安装后启用,在后台设置一下缓存时间即可(可以设置得稍微大一点)。目前,我就是使用了这个方案,现在的头像url就是类似“http://wjd.name/wp-content/glc_cache/*.jpg”的url了。

方法二:修改pluggable.php

此方法需要改动wordpress本身的代码。

打开“wp-includes/pluggable.php”文件,在第1645行找到如下代码块:

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 ( is_ssl() )
$host = ‘https://secure.gravatar.com’;
else
$host = ‘http://www.gravatar.com’;

替换之后就可以解决问题。

方法三: 修改functions.php

此方法需要改动wordpress本身的代码。

打开“wp-includes/functions.php”文件,添加如下代码:

function cache_gravatar($avatar) {
$tmp = strpos($avatar, ‘http’); //76
$g = substr($avatar, $tmp, strpos($avatar, “‘”, $tmp) – $tmp);//图像地址
$tmp = strpos($g, ‘avatar/’) + 7;//31
$f = substr($g, $tmp, strpos($g, “?”, $tmp) – $tmp);//图像名称
$s = ‘size’ . substr($avatar,strpos($avatar, “?s=”, $tmp) + 3,2);//图像大小 48
$nogfw = ‘http://www.gravatar.com/avatar/’ . $f . ‘?size=’ . $s . ‘.png’;//替换成没有被墙的地址
$w = get_bloginfo(‘wpurl’).’/wp-content’;//博客地址
$e = ABSPATH .’/wp-content/avatar/’. $f . $s .’.png’;//主机图像地址
$t = 1209600; //14天 单位秒
if ( !is_file($e) || (time() – filemtime($e)) > $t ) copy($nogfw, $e); //当头像不存在或者图像存在时间超过14天更新
if ( filesize($e) < 500 ) copy($w.’/avatar/default.png’, $e);
$avatar = strtr($avatar, array($g => $w.’/avatar/’ . $f . $s . ‘.png’));//将原来的地址替换成本地地址
return $avatar;
}
add_filter(‘get_avatar’, ‘cache_gravatar’);

添加之后就可以解决问题。

网上还有很多的方法,感兴趣的朋友也可以在网上搜索一下,如果只是想解决Gravatar头像现实问题的话想必以上三种方法已经够你使用了,我还是推荐第一种方法,无需改动wordpress本身的程序,插件也很小,非常方便,就当什么事都没发生过吧 :)

你可能喜欢的博文:
 

水楼已经盖了 2 层了!

  1. sbobet

    了不起的工作!這是信息的類型應該是共享在網上傳播。可恥的是,搜索引擎不定位此職位越高!到這兒來訪問我的網站。謝謝=)

  2. SBOBET

    There Is Visibly A Bundle To Realize About This. I Think You Made Various Good Points In Features Also.

赶快说点什么吧! ^_^