用了知便鸟的主题ality后发现在IE浏览器火其他浏览器时一直头像显示不出来,几个博友也浏览说看不到头像,于是去知便鸟上看了下,有如下解决方法:
利用多说Gravatar头像中转服务器替代头像默认服务器。
将下面代码添加到当前主题functions.php文件中:
- function?mytheme_get_avatar(?$avatar?)?{
- $avatar?=?preg_replace(?"/http://(www|d).gravatar.com/","http://gravatar.duoshuo.com",$avatar?);
- return?$avatar;
- }
- add_filter(?'get_avatar',?'mytheme_get_avatar'?);
可惜多说服务稳定性欠佳,有时也会暂时无法显示头像。如编辑已发表的文章,并且文章已有评论,还需要在文章编辑页面打开右上的“显示选项”去掉“评论”勾选,否则在点击更新文章按钮后,还是会向Gravatar头像服务器发送获取头像请求,从而影响页面加载速度。
使用https方式(SSL)调用Gravatar头服务器地址
使用方法同上,将下面代码添加到主题functions.php文件中:
- function?get_ssl_avatar($avatar)?{
- $avatar?=?preg_replace('/.*/avatar/(.*)?s=([d]+)&.*/','<img?src="https://secure.gravatar.com/avatar/$1?s=$2"?class="avatar?avatar-$2"?height="$2"?width="$2">',$avatar);
- return?$avatar;
- }
- add_filter('get_avatar',?'get_ssl_avatar');
貌似添加以上代码后,一些头像缓存插件也将失效。
使用Gravatar Fixed 头像修正插件
插件设置页面,将Gravatar 服务器和Gravatar SSL 服务器,全部改为:https://secure.gravatar.com
另一个比较笨的方法:
打开wordpress程序目录的wp-includes文件夹,找到pluggable.php(WP4.2之前版本)打开,将大约2150至2157行:
- if?(?is_ssl()?)?{
- $host?=?'https://secure.gravatar.com';
- }?else?{
- if?(?!emptyempty($email)?)
- $host?=?sprintf(?"http://%d.gravatar.com",?(?hexdec(?$email_hash[0]?)?%?2?)?);
- else
- $host?=?'http://0.gravatar.com';
- }
替换为:
- $host?=?'https://secure.gravatar.com';
或者(支持头像缓存插件)
- $host = 'http://cn.gravatar.com';
WP4.2之后版本,打开wordpress程序目录的wp-includes文件夹,打开link-template.php,将大约第3604行的:
- $url?=?sprintf(?'http://%d.gravatar.com/avatar/%s',?$gravatar_server,?$email_hash?);
修改为:
- $url?=?sprintf(?'http://cn.gravatar.com/avatar/%s',?$email_hash?);
之所以说“笨”是因为下次更新程序,还需要再次修改,不过这个方法最实用。
以上方法主要针对使用用国内主机用户,使用国外主机这时优势突显,并不需要修改任何东西,安装头像缓存插件,将头像缓存到本地,并不影响正常使用。
推荐几款Gravatar头像缓存插件:
fonts.googleapis.com和gravatar.com被墙,严重影响了WordPress用户体验,对新手熟习WordPress的造成极大障碍。
好给力啊
“IE浏览器火其他浏览器”,错别字。“对新手熟习WordPress的造成极大障碍”,多了个“的”?
“被强后如何替换Gravatar头像默认服务器”,错别字?
哈哈,谢谢!已修改,打拼音得就是这样容易犯错 😛