解决Gravatar头像被墙

哎,又是万恶的GFW!!就不多解释了,下面直接贴解决方案,都是网上找的,目前我在使用方案3

方案1:调用ssl 头像链接

首先在你的浏览器里输入以下地址,看看是否可以访问 https://secure.gravatar.com/avatar/ 如果可以访问就可以用这个方案,而且速度还不错。

在主题的 functions.php 加入以下代码

1
2
3
4
5
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');

方案2:本地缓存

这个方案原理是从你的服务器下载gavatar的头像缓存在服务器本地。所以速度取决于你的服务器访问速度 在主题的 functions.php 加入以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function 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)) > $t ) { //当头像不存在或文件超过14天才更新
copy(htmlspecialchars_decode($g), $e);
} else
$avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if (filesize($e) < 500)
copy($w.'/avatar/default.jpg', $e);
return $avatar;
}
add\_filter('get\_avatar', 'my_avatar');

然后 在WordPress安装根目录下新建一个名为 avatar 的文件夹 ,并给予写权限。放入一张图片命名为default.jpg。这张图片就是默认图片

方案3:多说缓存

在主题的 functions.php 加入以下代码

1
2
3
4
5
function get\_avatar\_duoshuo( $avatar ) { 
$avatar = preg_replace( "/http://(www|d).gravatar.com/","http://gravatar.duoshuo.com",$avatar );
return $avatar;
}
add\_filter( 'get\_avatar', 'get\_avatar\_duoshuo' );

  • 本文作者: Tshine Zheng
  • 本文链接: 174.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!