解决 wordpress gravatar 被墙

2014-12-25 13:44:59

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

  1. 在 wordpress 根目录中增加一个目录 avatar,确认权限为 755
  2. 在 avatar 目录中上传一张默认头像 defalut.jpg
  3. 在主题 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');

发表评论

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