Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 其他分享 › 「其他分享」解决Gravatar头像被墙无法显示问题

「其他分享」解决Gravatar头像被墙无法显示问题

Eswlnk的头像
Eswlnk
2022-08-29 18:48:35
「其他分享」解决Gravatar头像被墙无法显示问题-Eswlnk Blog
智能摘要 AI
本文讨论了Gravatar头像在中国大陆被墙或访问速度慢的问题,并提供了几种解决方案。常用方案包括使用官方HTTPS头像、多说图片快取和七牛缓存机制。作者一直使用官方HTTPS头像,但在WordPress 4.2版本后,由于scrset属性的引入,头像尺寸变大了一倍。为解决此问题,作者重新编写了代码,采用国内的Cravatar作为Gravatar的替代品,确保头像正常显示并兼容Gravatar API。具体实现代码已提供,只需将其放入主题的functions.php文件中即可。

Gravatar的头像被墙或是访问速度极慢是一个很久以前的问题,而网络上有很多办法来处理它。

当前普遍采用的方案有:

  1. 利用官方的https头像,并且当前这种 https方法没有被堵,而且还算可以。
  2. 用「多说」的图片快取,不过现在发现它不太稳定,或者下载速度太快,或者无法下载。
  3. 采用七牛缓存机制。现在的计划是,注册一个账号,然后再安装一个新的插件,虽然还没有尝试过,但是从系统的反应来看,还是很稳定的。
「其他分享」解决Gravatar头像被墙无法显示问题-Eswlnk Blog
解决Gravatar头像被墙无法显示问题

我一直使用的是第一种方式,应该说使用了很久了,一直都算比较正常的。网上的代码是这样的:

function get_ssl_avatar($avatar) {
   $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2&d=mm" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
   return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

但是从WordPress 4.2版开始,这种方式就会出现一个问题,就头像好像比以前大了一倍。当然我也没有细看,只是通过CSS对头像大小做了限制,但是后台的头像不可能每次升级都改下后台的css代码,那样也太麻烦了,于是研究下,发现从WordPress4.2版开始,引入了scrset,srcset属性允许作者根据不同分辨率或不同的视窗尺寸提多个不同分辨图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题。也就是可以根据屏幕密度显示对应尺寸的图片,比如正常的PC显示器默认设备像素比都是1,iphone6是2,iphone6 plus就是3。

WordPress4.2+的scrset定义的2x的,之前的代码获取出来的图片大小是50,但是之后就获取到scrset里面的图片大小100上了,这就导致了为什么后来图片扩大一倍的缘故。

于是我就重写了下代码,解决了这个问题,头像图片的路径也使用了目前比较稳定的方法Cravatar头像。Cravatar是lifepress团队在国内做的一个公益项目,是目前Gravatar相对完美的替代品,看了官方的文档,Cravatar 100%兼容Gravatar的头像API,目前我也是通过替换域名的方式来使用Cravatar接替Gravatar。

将下面的代码放到主题的functions.php里面就行。

//替换Gavatar头像地址
function get_ssl_avatar($avatar) {
    if (preg_match_all(
        '/(src|srcset)=["\']https?.*?\/avatar\/([^?]*)\?s=([\d]+)&([^"\']*)?["\']/i',
        $avatar,
        $matches
    ) > 0) {
        $url = 'https://cravatar.cn';
        $size = $matches[3][0];
        $vargs = array_pad(array(), count($matches[0]), array());
        for ($i = 1; $i < count($matches); $i++) {
            for ($j = 0; $j < count($matches[$i]); $j++) {
                $tmp = strtolower($matches[$i][$j]);
                $vargs[$j][] = $tmp;
                if ($tmp == 'src') {
                    $size = $matches[3][$j];
                }
            }
        }
        $buffers = array();
        foreach ($vargs as $varg) {
            $buffers[] = vsprintf(
            '%s="%s/avatar/%s?s=%s&%s"',
            array($varg[0], $url, $varg[1], $varg[2], $varg[3])
           );
        }
        return sprintf(
                '<img alt="avatar" %s class="avatar avatar-%s" height="%s" width="%s" />',
                implode(' ', $buffers), $size, $size, $size
            );
    } else {
        return false;
    }
}
add_filter('get_avatar', 'get_ssl_avatar');

ESWINK , 版权所有丨如未注明 , 均为原创

原文标题:「其他分享」解决Gravatar头像被墙无法显示问题

「其他分享」解决Gravatar头像被墙无法显示问题-Eswlnk Blog
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
GravatarhttpsWordPresswordpress头像显示
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「其他分享」优秀的编程字体分享
上一篇
「其他分享」CSS3下载渐变按钮制作
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「亲测有效」Google Gemini 学生优惠:解决身份验证和支付卡验证
  • 插件分享:新增自助购买卡密功能
  • 解决国际版EdgeOne绑卡和手机验证问题
  • 小工具开发之EdgeOne免费计划兑换工具
  • 主题改造计划:手动模块化网站首页
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「工具分享」歧路旅人II 修改器
2024-06-11 21:13:59
待收藏 | 做好这几步,即可准确识别百度蜘蛛!
2022-03-24 21:50:47
「主题分享」Mango 主题 | WordPress 瀑布流主题
2022-11-25 22:47:47

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 1.227 秒   |  SQL查询 43 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈