前言
最近两个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
Comments | NOTHING