Gravatar加速:WordPress头像不显示如何解决

发布于 2021-04-25  473 次阅读


本文于 2021年5月1日 11:45 更新,注意查看最新内容

前言

最近两个WordPress站的头像都开始不显示,于是逐一排查问题,B站用的一直是Gravatar的官方接口,偶尔不显示也是正常。

本站之前优化访问速度的时候,使用了WPJAM插件内置的V2ex的接口,正常情况下应该不会存在问题。

突然间想到前两天访问不了V2ex的情况(后来查证发现是域名污染了),一切似乎就解释得通了。

解决

利用SM.MS的Gravatar接口替换默认Gravatar接口

将下面代码添加到当前主题functions.php文件中:

function mytheme_get_avatar( $avatar ) {
  $avatar = preg_replace( "/http:\/\/(www|\d).gravatar.com/","https://gravatar.loli.net",$avatar );
  return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar' );

以上代码由脚本之家提供的代码格式化工具格式化:http://tools.jb51.net/code

插曲

正常情况下,添加完上述代码,默认Gravatar接口就会被替换,然后正常显示Gravatar头像。

但刷新之后Gravatar头像还是没有正常显示,于是我开始排查问题。

我发现前端头像的URL还是显示的V2ex域名,也就是说,接口没有正常替换成功。

我隐约记得之前折腾过一次,手动替换的默认Gravatar头像接口,但几番找寻依旧没有结果(猜测可能是代码优先级的问题)。

因为WordPress本身不提供主题文件的批量搜索,于是我打算从服务器将整个主题文件下载到本地,进而找到当时的代码。

正当我想要下载主题文件时,我突然想起之前是通过WPJAM插件修改的接口。

于是我找到了WPJAM管理后台,想要自定义修改Gravatar头像的接口,但现实又让我傻了眼:Gravatar加速只有两个选项,一是默认,二是V2ex(估计作者也没想过,有一天V2ex会被Q,2333)。

因为不熟悉插件目录,没法找到这个功能写在了哪,所以还是下载了主题文件。

这个功能在WPJAM的目录是:wpjam-basic\public\wpjam-hooks.php

将352行的

$gravatar_url = 'http://cdn.v2ex.com/gravatar/';

改为

$gravatar_url = 'https://gravatar.loli.net/';

即可。

然后在WPJAM的后台选择优化设置-加速优化-Gravatar加速-使用v2ex镜像加速服务

如果你介意使用v2ex镜像加速服务的提示,可以在wpjam-basic\public\wpjam-basic.php进行修改。

看最新版的代码,好像新版已经支持自定义镜像加速服务,所以大家也可以直接安装最新版。

因为老版够用,我暂时不会安装最新版。

其他

接口

https://fdn.geekzu.org/avatar/

https://sdn.geekzu.org/avatar/

https://dn-qiniu-avatar.qbox.me/avatar/

PS:Gravatar官方的调用方式是www.gravatar.com/avatar/+邮箱Md5,使用上述接口,只需将www.gravatar.com/avatar/替换为第三方接口加上对应邮箱的Md5即可。

WordPress 官方中文文档

https://codex.wordpress.org/zh-cn:Main_Page

参考

《替换Gravatar头像默认服务器》

《分享几个国内的Gravatar头像接口》

《分享几个亲测能用的Gravatar CDN》


这短短的一生,我们最终都会失去。