YunHe.ME | 云和の小屋 - Gravatar
type: channel
link: https://yunhe.me/tag/Gravatar/
items: 解决Typecho无法正确显示Gravatar头像
items: Gravatar头像服务被墙打不开的解决

解决Typecho无法正确显示Gravatar头像
type: item
date: 2021-12-12T18:31:00+08:00
description: 因为某些原因在中国大陆Gravatar头像彻底无法进行访问。由于主题前端一般都可以设置第三方国内镜像源，所以没什么问题。而Typecho后台显示却无法正常加载，很是让人难受。解决方案一修改默认Gravatar头像地址为第三方国内镜像源从网站根目录进入/var/Typecho打开Common.php，找到名为gravatarUrl的function，大概在932行左右，可以用搜索功能查找一下。找到如下所示的代码：if (defined('__TYPECHO_GRAVATAR_PREFIX__')) { $url = __TYPECHO_GRAVATAR_PREFIX__; } else { $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; $url .= '/avatar/'; }修改https://secure.gravatar.com为国内第三方镜像源地址，修改/avatar/为镜像源的文件夹，如此操作后台即可正常显示Gravatar头像。不要忘记https://和文件夹两侧的/以第一个镜像源为例，使用上文所述的方法修改完后的结果为：if (defined('__TYPECHO_GRAVATAR_PREFIX__')) { $url = __TYPECHO_GRAVATAR_PREFIX__; } else { $url = $isSecure ? 'https://sdn.geekzu.org' : 'http://www.gravatar.com'; $url .= '/avatar/'; }解决方案二直接打开Typecho安装目录下的config.inc.php文件，加入以下代码即可（加在任何位置都可）define('__TYPECHO_GRAVATAR_PREFIX__', 'https://sdn.geekzu.org/avatar/');示例推荐第三方国内镜像源：https://sdn.geekzu.org/avatar/ （推荐）https://dn-qiniu-avatar.qbox.me/avatar/https://cdn.v2ex.com/gravatar/https://gravatar.loli.net/avatar/参考自© 呆小萌_Dream

Gravatar头像服务被墙打不开的解决
type: item
date: 2015-01-05T12:17:00+08:00
description: 不知道从什么时候开始，Wordpress一直以来都依赖的Gravatar头像服务在国内被墙无法访问，因此使得很多使用了Gravatar头像在前台显示的出现如好友墙读者墙什么的Wordpress博客打开后就一直在加载…其实我们可以使用下面的3种解决Gravatar打不开不显示的方法：多说头像调用、使用本地缓存、使用SSL方式调用头像，其中比较推荐的是多说的头像调用，SSL方式由于依然使用国外服务器所以速度上依然不是很快。方法一：调用多说Gravatar头像后台 -> 外观 ->编辑 选择functions.php，在底部加入以下代码（注意在最后一个?>之前）function duoshuo_avatar($avatar) { $avatar = str_replace(array(www.gravatar.com,0.gravatar.com,1.gravatar.com,2.gravatar.com),gravatar.duoshuo.com,$avatar); return $avatar; } add_filter('get_avatar', 'duoshuo_avatar', 10, 3 );方法二：使用本地缓存调用Gravatarfunction my_avatar($avatar) { $tmp = strpos($avatar, 'http'); $g = substr($avatar, $tmp, strpos($avatar, ', $tmp) - $tmp); $tmp = strpos($g, 'avatar/') + 7; $f = substr($g, $tmp, strpos($g, ?, $tmp) - $tmp); $w = get_bloginfo('wpurl'); $e = ABSPATH .'avatar/'. $f .'.jpg'; $t = 1209600; //設定14天, 單位:秒 if ( !is_file($e) || (time() - filemtime($e)) &gt; $t ) { //當頭像不存在或文件超過14天才更新 copy(htmlspecialchars_decode($g), $e); } else $avatar = strtr($avatar, array($g =&gt; $w.'/avatar/'.$f.'.jpg')); if (filesize($e) &lt; 500) copy($w.'/avatar/default.jpg', $e); return $avatar; } add_filter('get_avatar', 'my_avatar')同上，加入functions.php文件中，不过有一个问题就是国内主机无法使用，香港主机、日本主机、美国主机等可以使用。方法三：使用SSL调用Gravatar头像function get_ssl_avatar($avatar) { $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&&.*/',' ',$avatar); return $avatar; } add_filter('get_avatar', 'get_ssl_avatar');注册Gravatar如果现在想不翻墙注册Gravatar又该怎么办呢，打开http://cn.gravatar.com就可以啦，貌似是唯一还能打开的Gravatar啦！不过由于启用了Google字体加载速度也是醉醉的。当然你也可以翻墙上Gravatar去。