Gravatar 在国内被墙的越来越严重,严重影响了博客的打开速度。以下方式能将 wordpress 引用的 Gravatar 通过服务器下载到本地并缓存。只确保海外的主机能用,国内的主机本身就无法访问到 gravatar 服务器,缓存就更无从谈起了。
- 在 wordpress 根目录中增加一个目录 avatar,确认权限为 755
- 在 avatar 目录中上传一张默认头像 defalut.jpg
- 在主题 functions.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');