本帖最后由 洛尘 于 2015-4-29 08:47 编辑
教程介绍对于Gravatar头像各位应该不陌生吧,WordPress就使用了Gravatar头像,但是Gravatar头像的服务器在美国,这导致了国内用户由于各种原因打不开,加载慢,甚至影响网站的加载速度,所以本文章给出了两种解决方案.
推荐使用方案二 方案一将Gravatar头像缓存到本地
1.首先在网站根目录创建一个avatar文件夹(权限改为777或755)。
2.新建一张默认的头像图片,名为default.jpg并放入avatar文件夹中。
3.将以下代码添加到当前使用的主题的functions.php文件中即可。 - //将Gravatar头像缓存到本地
- function ymjihe_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 ) { //头像超过设定时间或不存在则更新
- 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', 'ymjihe_avatar');
复制代码 方案二使用多说的Gravatar镜像源
将以下代码添加到当前使用的主题的functions.php文件中即可。(这里提供两种代码,喜欢那种用那种吧) - //多说Gravatar镜像源
- function get_avatar_loo( $avatar ) {
- $avatar = preg_replace( "/http%3A%2F%2F\d.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D\d+/","mm",$avatar );
- $avatar = preg_replace( "/http:\/\/(www|\d).gravatar.com/","http://gravatar.duoshuo.com",$avatar );
- return $avatar;
- }
- add_filter( 'get_avatar', 'get_avatar_loo' );
复制代码- //多说Gravatar镜像源
- function ymjihe_get_avatar($avatar) {
- $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),
- "gravatar.duoshuo.com",$avatar);
- return $avatar;
- }
- add_filter( 'get_avatar', 'ymjihe_get_avatar', 10, 3 );
复制代码 |
共 0 个关于本帖的回复 最后回复于 2015-4-29 16:45