Gravatar头像加载缓慢的问题,一直困扰着我们,启用头像本地缓存或者缓存到类似七牛云上可能是唯一可行的办法。
还有一个让人郁闷的是,很多评论留言者并没有申请Gravatar头像,只能显示WordPress自带的古怪头像,看着很不爽。
下面分享一段随机显示本地评论头像的代码,预先准备一些漂亮的图片代替WordPress自带的头像。
添加代码
将下面代码添加到当前主题[code]functions.php[/code]中:
- add_filter( 'get_avatar' , 'local_random_avatar' , 1 , 5 );
- function local_random_avatar( $avatar, $id_or_email, $size, $default, $alt) {
- if ( ! empty( $id_or_email->user_id ) ) {
- $avatar = ''.get_template_directory_uri().'/avatar/admin.jpg';
- }else{
- $random = mt_rand(1, 10);
- $avatar = ''.get_template_directory_uri().'/avatar/'. $random .'.jpg';
- }
- $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
- return $avatar;
- }
其中:[code]mt_rand(1, 10);[/code]数字为随机图片张数可以自行修改。
准备头像图片
在当前主题目录中新建一个名称为avatar的文件夹,里面放10张名称连续的jpg图片,比如1.jpg、2.jpg、3.jpg.........,和一张用于管理员的图片,名称为admin.jpg
添加上述代码后,只有管理员是显示固定的图片,其他留言者都是随机显示预先准备的头像图片,包括注册用户。
可以安装本地上传头像插件:Simple Local Avatars,让注册用户在后台上传头像,从而显示自己固定的头像。
可能有童鞋会问,已申请Gravatar头像的留言者,是否能显示正常的Gravatar头像,理论上是可以通过判断实现的,不过这就需要到Gravatar头像站点去检测,会严重拖慢速度,得不偿失。
还可以试试,用留言者名称第一个字母为头像的插件:WP First Letter Avatar
另附,一段缓存Gravatar头像到七牛云存储的代码
- function qiniu_avatar($avatar) {
- $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*.srcset=.*/','<img src="http://你的缓存域名/avatar/$1-$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
- return $avatar;
- }
- add_filter( 'get_avatar', 'qiniu_avatar', 10, 3 );
如果你使用了七牛云存储,可以将上面的代码添加当前主题[code]functions.php[/code]中,可将Gravatar头像缓存到七牛,具体如何实现,不是本文的重点,可自行网上搜索相关文章。
本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!
河南省郑州市 1F
这个想法不错啊
浙江省杭州市 B1
@ 飯特稀 嗯,确实不错啊!
广东省佛山市 B1
@ 飯特稀 JSDKG果
浙江省杭州市 2F
不错哦,
浙江省杭州市 3F
沙发
河南省郑州市 4F
好办法,谢鸟哥了,我拿去用了
河南省郑州市 5F
不错,有点意思啊。。
广东省佛山市 6F
之前就是用的随机头像,注册用户显示自行设定的头像,对于有gravatar头像的访客显示相应的gravatar头像,对于没有gravatar头像的访客显示随机头像(现在改为了显示访客首字母)~~
广东省佛山市 7F
同一个评论者也是随机显示同头像,如果同一个评论者能固定随机的一个头像就完美了
江苏省苏州市 8F
技术流,没精力折腾WP了
河南省郑州市 9F
其实我早就想实现这个功能了,只是不知道怎么搞,感谢鸟哥,真是心有灵犀一点通啊。
河南省郑州市 10F
喜欢知更鸟
浙江省宁波市 11F
功能不错。。。
广东省佛山市 12F
WP First Letter Avatar插件还是不错的,有gravatar头像就显示,没有就显示字母头像,这样感觉比较给力
江苏省苏州市 B1
@ boke112导航 额 你那边使用的是插件么 我还以为是代码的
江苏省苏州市 13F
不错,这个很适合传统行业的博客使用的!
河南省郑州市 14F
鸟哥的 WP First Letter Avatar 不支持中文昵称,这里有个修改版的
https://www.thsang.com/394.html
陕西省西安市 15F
那鸟哥,你下面的留言还有好多都是默认的头像
中国 B1
@ 墨丶水瓶 我自己目前并没有使用本文功能
湖北省武汉市 16F
知更鸟给中国的wp粉丝贡献了好多知识,从2010年开始一直关注你的博客,每次过来都会学习到很多东西,谢谢鸟叔
广东省佛山市 17F
123414bgv考
广东省佛山市 18F
1222144444453634李晓琳
广东省佛山市 19F
酸楚dss
江苏省苏州市 20F
这个方法好像不支持https啊
陕西省西安市 21F
牛逼了,自带头像是真的难看
陕西省西安市 22F
可以固定头像吗,游客留言的
陕西省西安市 23F
学习了
陕西省西安市 24F
感谢
菲律宾 25F
纠结呀
甘肃省 26F
怎么让已经在用户中心有头像的固定,没有头像的随机呢?鸟哥
湖南省邵阳市 27F
不知道是怎么回事,我使用上面的代码并没有生效。虽然使用的是国内主机访问很快,但gravatar头像还是一个拖速度的硬伤。
中国 B1
@ 墨铺 想解决头像慢的问题,看看我博客首页置顶的文章