WordPress 解决 Gravatar 头像无法打开问题 缓存本地化

特殊时期竟连 Gravatar  也被屏蔽了……如果网站出现加载速度缓慢等问题,有80%的原因在于此。 总而言之,当 WordPress 在发现需要载入 Gravatar 头像时,使用以下代码会自动下载至本地服务器,下一次加载则直接从自己的网站上调用。由于网络的特殊性,Gravatar 打不开或者速度慢等情况是常有的事。所以开启此功能很有必要,仅适用于国外主机。在 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 = home_url(); // $w = get_bloginfo('url');
     $e = preg_replace('/wordpress\//', '', ABSPATH) .'avatar/'. $f .'.jpg';
     $t = 604800;
     if ( empty($default) ) $default = $w. '/avatar/default.jpg';
     if ( !is_file($e) || (time() - filemtime($e)) > $t )
         copy(htmlspecialchars_decode($g), $e);
     else
         $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
     if (filesize($e) < 500) copy($default, $e);
     return $avatar;
}
add_filter('get_avatar', 'my_avatar');

 

其中, $t = 604800; 是缓存的时间,以秒为单位,默认为7天。同时需要在你的网站根目录下新建一个名为”avatar”的文件夹,权限设置为777,在此文件夹内放入 default.jpg 作为没有头像时默认的显示图片,尺寸为 50*50。

亦或是直接使用我提供的七牛镜像服务器:

function replace_avatar_url($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"ds-gravatar.qiniudn.com",$avatar);
    return $avatar;
}
add_filter( 'get_avatar', 'replace_avatar_url', 10, 3 );

来自:http://www.mywpku.com/wordpress-download-gravatars-to-webserver.html

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。