WordPress默认头像是使用Gravatar头像,而Gravatar头像服务在国内访问又不是很稳定,经常出现无法打开的情况,这样的话用户头像就可能会无法载入,本文介绍使用 Gravatar头像稳定服务器的方法。
解决思路
Gravatar头像无法稳定访问的原因不是Gravatar网站服务器的原因,是国内防火墙的问题,所以解决思路是使用Gravatar头像服务的(HTTPS)加密线路。
实现方法
进入WordPress后台,点击外观-》编辑-》找到functions.php
把代码添加到主题目录下的functions.php文件最后即可
function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');
然后,刷新页面,就可以看到头像显示出来了。
2016.05.25 更新:
//替换Gavatar头像地址
function get_ssl_avatar($avatar) {
if (preg_match_all(
'/(src|srcset)=["\']https?.*?\/avatar\/([^?]*)\?s=([\d]+)&([^"\']*)?["\']/i',
$avatar,
$matches
) > 0) {
$url = 'https://secure.gravatar.com';
$size = $matches[3][0];
$vargs = array_pad(array(), count($matches[0]), array());
for ($i = 1; $i < count($matches); $i++) {
for ($j = 0; $j < count($matches[$i]); $j++) {
$tmp = strtolower($matches[$i][$j]);
$vargs[$j][] = $tmp;
if ($tmp == 'src') {
$size = $matches[3][$j];
}
}
}
$buffers = array();
foreach ($vargs as $varg) {
$buffers[] = vsprintf(
'%s="%s/avatar/%s?s=%s&%s"',
array($varg[0], $url, $varg[1], $varg[2], $varg[3])
);
}
return sprintf(
'<img alt="avatar" %s class="avatar avatar-%s" height="%s" width="%s" />',
implode(' ', $buffers), $size, $size, $size
);
} else {
return false;
}
}
add_filter('get_avatar', 'get_ssl_avatar');
.



不错的方法!!!