WordPress评论使用v2ex镜像解决Gravatar头像加载卡顿

最近自己的一个 wordpress网站更换主题后发现评论区的 Gravatar头像全都无法显示了,而且页面加载超慢一直在转圈!这时才想起来原来的主题是自带 Gravatar头像缓存功能的,所以以前没有出现现在这个问题的。

目前 Gravatar在我们大局域网内几乎是已经被q的不能用了,想要解决 WordPress头像加载卡顿问题但又不想额外安装头像缓存类插件增加自己小服务器的负担;也就只能自己动手将 Gravatar头像换成局域网内的镜像源加载了。

正好在网上看到有说 v2ex提供的 Gravatar的镜像服务不错,而且还是有各线路 CDN优化的并支持 ssl访问,很值得推荐使用。

关于 v2ex提供的 Gravatar头像的镜像在 wordpress网站的使用方法这里简单说两种:

修改 wordpress基础程序

在 wp-includes/pluggable.php 中 get_avatar() 函数的变量 $host的值指向新的加载地址,这是很彻底的从根本解决问题的方法;但是如果 wordpress程序升级更新后,修改的地址代码就会被还原!

修改主题模版的函数模版

在当前 wordpress主题的 functions.php 中添加替换函数,然后用 add_filter()的方法调用替换函数,将原本 gravatar.com的加载 url地址替换成我们想要的 url实现;注意此方法只针对当前的主题模版有效,更换 wordpress主题后配置失效;而 wordpress主程序更新升级不受影响!

wordpress的Gravatar头像加载卡顿

这里我推荐使用第二种方法修改

在 wordpress的管理后台,选择 “外观” => “主题” => “编辑” 选择当前主题的函数模版文件 functions.php 在文件末尾添加如下的自定义函数和filter方法:

  1. // 替换Gravatar为v2ex头像源 By www.jianlove.com
  2. function mytheme_get_avatar( $avatar ) {
  3. $avatar = preg_replace("/http:\/\/(www|\d).gravatar.com\/avatar\//","http://cdn.v2ex.com/gravatar/",$avatar);
  4. return $avatar;
  5. }
  6. add_filter('get_avatar', 'mytheme_get_avatar');

注意!代码替换问题

之前我直接复制粘贴在网上找到的类似代码后遇到一个问题,将头像获取地址修改为 v2ex的 cdn地址 http://cdn.v2ex.com/后刷新页面,所有的头像全部无法加载,页面调试发现头像获取全部 404了!

仔细研究检查终于发现了问题所在,原来 v2ex的 cdn的访问地址是: http://cdn.v2ex.com/gravatar/,而 wordpress默认的Gravatar获取地址: http://*.gravatar.com/avatar/,除了主机名不一样,后面的访问目录路径也是不同的。

从网上找的代码函数中的 preg_replace() 仅仅只替换了主机名称,没有替换到后面的目录名称,需要将默认的目录 avatar 也要替换为 gravatar 才能正常获取头像;所以最终我将代码修改成了上面的样子,成功实现从 http://cdn.v2ex.com/gravatar 获取头像!

所以最终通过将以上代码添加到当前 wordpress主题的 functions.php文件中保存,即可实现通过 v2ex的高速 Gravatar CDN 获取加载头像,解决头像加载延迟导致页面显示缓慢的问题!

 

转载请注明链接地址:荐爱小站 » WordPress评论使用v2ex镜像解决Gravatar头像加载卡顿

赞 (1) 赏 !

觉得文章有用就打赏一下吧,赠人玫瑰手有余香!

支付宝扫一扫打赏

微信扫一扫打赏