[WordPress]替换Gravatar为国内的Cravatar方案
WordPress默认使用的头像是Gravatar,这是一个全球通用的头像方案,通过一个邮箱地址即可在任何支持Gravatar的网站显示同一个头像,但是,国内基于某种原因,是无法加载这个网站的头像的。
虽然有一些CDN解决方案,如:
- gravatar.loli.net
- gravatar.loli.top
- avatar.sourcegcdn.com
- gravatar.ews1.com
- ......
但是,有时候还是会遇到各种问题,比如CDN挂了,或者缓存不同步等...
通过反复折腾,我终于找到个(自认为)最佳解决方案,那就是使用国内的Cravatar项目进行替换。
Cravatar支持在用户未设置Cravatar头像及Gravatar头像时自动匹配QQ头像(仅限使用QQ数字邮箱的用户),其带来的效果是:经过三级匹配(Cravatar头像->Gravatar头像->QQ头像)后,大约70%的访客都会得到准确的头像。也就是说使用Cravatar的话,如果你没有Gravatar头像,Cravatar可以默认输出你的QQ头像。
具体配置
只需要在主题function.php模板文件合适位置(任意一个非其他函数内的空闲位置)加入以下代码:
if ( ! function_exists( 'get_cravatar_url' ) ) { function get_cravatar_url( $url ) { $sources = array( 'www.gravatar.com', '0.gravatar.com', '1.gravatar.com', '2.gravatar.com', 'secure.gravatar.com', 'cn.gravatar.com', 'gravatar.com', ); return str_replace( $sources, 'cravatar.cn', $url ); } add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 ); add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 ); add_filter( 'get_avatar_url', 'get_cravatar_url', 1 ); } if ( ! function_exists( 'set_defaults_for_cravatar' ) ) { /** * 替换 WordPress 讨论设置中的默认头像 */ function set_defaults_for_cravatar( $avatar_defaults ) { $avatar_defaults['gravatar_default'] = 'Cravatar 标志'; return $avatar_defaults; } add_filter( 'avatar_defaults', 'set_defaults_for_cravatar', 1 ); } if ( ! function_exists( 'set_user_profile_picture_for_cravatar' ) ) { /** * 替换个人资料卡中的头像上传地址 */ function set_user_profile_picture_for_cravatar() { return '<a href="https://cravatar.cn" target="_blank">您可以在 Cravatar 修改您的资料图片</a>'; } add_filter( 'user_profile_picture_description', 'set_user_profile_picture_for_cravatar', 1 ); }
版权声明:
作者:小鱼
链接:https://afish.org/index.php/2023/10/22/gravatar2cravatar/
来源:小鱼的blog
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论