Gravatar头像都知道吧?全球通用头像、不知道的真心不适合做站,今天就介绍WordPress头像本地化!

gravatar-cache001

这个教程是很久之前就在网上看到过了,只不过昨天有一个友友说发出教程,那就发出来吧~

首先说一下他的原理,这个其实就是自动获得图片后保存于本地、然后下次就会自动从本地加载。这样一来速度就可以加快很多了、但是流量就是自己的了,不过不要担心、在Gravatar上传头像后会经过自动压缩,一张几K甚至几十K的图片完全不算流量。

你需要修改模板函数(functions.php),操作方法如下:

1. 在你的网站根目录下新建一个文件夹、名为“avatar”,主题自带缓存功能的人可能就知道(例如大前端主题)

2. 设置该目录(avatar)权限可读写,主要是针对Linux的主机。如果755的没用就设置777(设置递归更改)

3. 在该目录里面(avatar)随便放一张图片、做头像的(建议50*50)然后更名为“default.jpg”,最后加代码:

//Gravatar头像自动本地化
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; //设定7天, 单位:秒,这样就有足够的7天时间了、可以自己更改!
     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');

把上面的代码加到模板函数(functions.php)的最后一个“?>”里面、如果没有“?>”那就直接加到最后面!!

gravatar-cache002

最后的一步就是删除一下缓存、然后看看你网站的头像是不是都到了本地里面!是的话就OK了~


代码扩展:

这一段代码里面写了注释、主要效果已经很明显了,说一下一些函数的值和用法。

$t = 604800;

这一段你可以修改成任意数字、以秒来计算,上面的604800足足有7天,自行更改也可以!

$avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));

最后面得.jpg可以更改成你喜欢的后缀、但是必须是网页可读的图片格式,例如说.gif、.png等等!

代码里面所有的“avatar/”可以改成你自己喜欢的目录、具体更改方法就是重命名 。。。你懂得。


小结

又开始没有免费主机、主机资讯之类的讯息了,又来发教程了~其实是一位网友叫我发出来的~

目前有26条回应
Comment
Trackback
Loading ....
  • Sprit 回应于2013/01/02 11:28 回复TA

    感谢,看了看几天了,一直都是,只要把代码复制进去主题就出错,我找到原因了,今天成功了,本地化了,原来加在?>之前的话,不能有换行。。我一直都是?>单独在最后一行。谢谢了。。。。

    • Tomas 回应于2013/01/02 12:25 回复TA

      嗯嗯,错误自查能力很好哦~

  • wp技术 回应于2012/12/28 21:28 回复TA

    我的也是用的缓存头像

    • Tomas 回应于2013/01/02 12:31 回复TA

      是啊、这样的话对于国内主机简直就是福音~

  • 那不是我 回应于2012/12/28 14:23 回复TA

    以前也用过,不过如果有人头像变了,本地缓存更新似乎不够及时

    • Tomas 回应于2012/12/28 18:40 回复TA

      时间可以自己设置,如果不担心自己主机的负载的话、可以设置每秒更新~

  • saintsky 回应于2012/12/27 00:00 回复TA

    恩,有点用,不过这点速度影响不太大吧

    • Tomas 回应于2012/12/27 17:18 回复TA

      嗯嗯、这是的确,但是到时候GFW大发雷霆的时候你就知道这个功能是多么伟大了 。。

  • Arucr 回应于2012/12/26 17:07 回复TA

    学习一下,给自己用上再说! 😎

    • Tomas 回应于2012/12/26 19:53 回复TA

      喔喔~欢迎新访客~这个其实挺简单的~要常来哦~

  • voncing 回应于2012/12/26 16:09 回复TA

    我的gravatar头像貌似从数据库调用的,用这个代码缓存不了

    • Tomas 回应于2012/12/26 19:52 回复TA

      纳尼、从数据库调用的 。。咋回事?应该都可以的吧。 。数据库调用会很慢的说 。。

      • voncing 回应于2012/12/26 20:45 回复TA

        @Tomas: 据主题作者讲,数据库调用效率要高

        • Tomas 回应于2012/12/26 20:48 回复TA

          话说请求数据库的次数越多就导致主机负载越大 。。

          • voncing 回应于2012/12/26 20:50 回复TA

            @Tomas: 改过很多gravatar头像评论代码都不行,一直出错,只好用回原版的了,我一直想缓存头像的

            • Tomas 回应于2012/12/26 22:09 回复TA

              唉、、大不了逼急了就换一个主题呗~

              • voncing 回应于2012/12/26 22:10 回复TA

                @Tomas: 这个主题花费了太多心血修改~~舍不得换了

                • Tomas 回应于2012/12/27 17:13 回复TA

                  把你现在花费了的全部转移到新主题中~

  • 喇叭 回应于2012/12/26 12:47 回复TA

    啊呜 表示无奈 还是不行哎

    • Tomas 回应于2012/12/26 19:52 回复TA

      喔喔、代码添加的正确了吗?如果不介意的话可以把你的后台帐密发给我来帮你更改。邮箱就是你收到回复的这个邮箱

  • Sprit 回应于2012/12/26 12:36 回复TA

    哈哈,看到了。谢谢你!!!

    • Tomas 回应于2012/12/26 19:51 回复TA

      不用谢的、这个其实小CASE,好教程要共享~

  • 喇叭 回应于2012/12/26 11:40 回复TA

    啊哈哈 我去试试 哈哈 3Q

    • Tomas 回应于2012/12/26 19:49 回复TA

      嗯嗯、这个如果是国内主机的话会大有用处~!

  • 本篇文章没有Trackback
你目前的身份是游客,请输入昵称和电邮!