解决 wordpress gravatar 被墙

Gravatar 在国内被墙的越来越严重,严重影响了博客的打开速度。以下方式能将 wordpress 引用的 Gravatar 通过服务器下载到本地并缓存。只确保海外的主机能用,国内的主机本身就无法访问到 gravatar 服务器,缓存就更无从谈起了。

  1. 在 wordpress 根目录中增加一个目录 avatar,确认权限为 755
  2. 在 avatar 目录中上传一张默认头像 defalut.jpg
  3. 在主题 functions.php 中增加以下代码

[code lang=”php”]
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’);
[/code]

发表评论

电子邮件地址不会被公开。 必填项已用*标注