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');
.
不错的方法!!!