Gravatar图片链接异常:如何移除链接中的http://i2.wp.com/前缀
关于Gravatar头像链接中
http://i2.wp.com/的作用与移除方法 嘿,这个问题我太熟悉了!咱们来好好捋一捋:
一、http://i2.wp.com/到底是干啥的?
这是WordPress.com官方提供的图片代理/CDN服务,也就是Jetpack插件里的「站点加速器(Site Accelerator,原名叫Photon)」功能。它的核心作用有这些:
- 把图片缓存到全球各地的CDN节点,让不同地区的用户加载头像速度更快
- 自动优化图片格式(比如转成体积更小的WebP)、压缩图片大小,帮你省带宽还提升加载性能
- 支持按需缩放、裁剪图片尺寸,不用自己写额外代码处理
- 能绕过一些网站的防盗链限制,避免头像图片因为盗链被原站屏蔽
二、怎么移除这个前缀?
根据你的情况(用了Total子主题),可以按这几种方式尝试:
1. 关闭Jetpack的站点加速器功能
如果你安装了Jetpack插件:
- 登录WordPress后台,找到「Jetpack」→「设置」→「性能」板块
- 找到「站点加速器」选项,直接关闭它就行。之后调用
get_avatar返回的链接就不会再经过wp.com的代理了。
2. 检查主题自定义代码
你的Total子主题可能自己加了代理逻辑:
- 打开子主题的
functions.php文件,搜索get_avatar或者get_avatar_url相关的过滤钩子 - 如果找到类似给头像URL添加
i2.wp.com前缀的代码段,直接删掉或者注释掉就OK。比如这种:add_filter('get_avatar_url', 'total_child_add_wpcom_proxy', 10, 3); function total_child_add_wpcom_proxy($url, $id_or_email, $args) { return 'http://i2.wp.com/' . parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH); }
3. 用过滤钩子强制移除前缀
如果上面两种方法都没搞定,直接在子主题的functions.php里加这段代码,就能自动去掉代理前缀:
add_filter('get_avatar_url', 'remove_wpcom_proxy_from_avatar', 99); function remove_wpcom_proxy_from_avatar($url) { // 检测URL是否包含wp.com代理前缀 if (strpos($url, 'http://i2.wp.com/') === 0) { // 移除前缀,还原原图片链接 $url = substr($url, strlen('http://i2.wp.com/')); // 可选:给原链接补全HTTPS协议,更安全 $url = 'https://' . $url; } return $url; }
内容的提问来源于stack exchange,提问作者odedta
相关产品推荐
相关产品推荐

