猎盾网络|周口网站建设优化公司

解决WordPress中Gravatar头像无法显示访问的问题

早前我们就曾发布过一篇关于 WordPress中的Gravatar 头像无法访问的显示问题,也列出了几种具体解决方法。Gravatar 头像也是WordPress公司收购的产品。

解决WordPress中Gravatar头像无法显示访问的问题

解决WordPress中Gravatar头像无法显示访问的问题

其中方法一用的比较广泛:使用官方https的头像链接,目前这个https方式没被墙,速度也还不错,具体如下:

解决方法1:使用Gravatar的HTTPS(适用于任何主题):

在主题目录中,找到并打开 functions.php 文件,把以下代码复制放到该文件中:

// HackGravatatr
function liedun_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', 'liedun_get_ssl_avatar');

但是,这个解决方法从WordPress 4.2 版开始,就出现了一个显示问题,就是头像图片比以前显示的大了一倍。经过相关技术研究发现,从WordPress4.2版开始,引入了scrset,srcset属性允许作者根据不同分辨率或不同的视窗尺寸提多个不同分辨图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题。也就是可以根据屏幕密度显示对应尺寸的图片,比如正常的PC显示器默认设备像素比都是1,iphone6是2,iphone6 plus就是3。

WordPress4.2+的scrset定义的2x的,如果之前的代码获取的图片大小是50px,那么WordPress4.2版之后获取到scrset里面的图片大小就是100px了,这就是导致图片显示变大一倍的缘故。

该问题通过重写代码即可解决,新版代码(参考)如下:

// HackGravatatr
function liedun_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', 'liedun_get_ssl_avatar');

什么是 Gravatar?

Gravatar是Globally Recognized Avatar的缩写,是gravatar推出的一项服务,意为“全球通用头像”(已被墙),Gravatar 头像也是WordPress公司收购的产品。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来。
Gravatar的概念首先是在国外的独立WordPress博客中兴起的,当你到任何一个支持Gravatar的网站留言时,这个网站都就会根据你所提供的Email地址为你显示出匹配的头像。当然,这个头像,是需要你事先到Gravatar的网站注册并上传的,否则,在这个网站上,就只会显示成一个默认的头像。

发表回复