国内Gravatar头像被墙解决方法

编程之家收集整理的这篇文章主要介绍了国内Gravatar头像被墙解决方法编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。

Gravatar 是 Globally Recognized Avatar 的缩写,是 gravatar 推出的一项服务,意为“全球通用头像”。如果在 Gravatar 的服务器上放置了你自己的头像,那么在任何支持 Gravatar 的 blog 或者留言本上留言时,只要提供你与这个头像关联的 email 地址,就能够显示出你的 Gravatar 头像来。自从谷歌被墙,越来越多的知名国外服务器无法正常访问!Gravatar 头像服务也被屏蔽了,wordpress 头像显示自然是不行了,速度慢,解决方案如下:

使用 https 方式(SSL)调用 Gravatar 头服务器地址,https 还是没被墙的,而且速度还不错,直接调用这个最简单了。如果你的网站启用了 ssl 则不需要了,否则 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,插件下载页面 http://wpceo.com/gravatar-fixed/

本地缓存

下面的代码加到 functions.PHP

function my_avatar($avatar) {

$tmp = strpos($avatar,'http');

$g = substr($avatar,$tmp,strpos($avatar,"'",$tmp) - $tmp);

$tmp = strpos($g,'avatar/') + 7;

$f = substr($g,strpos($g,"?",$tmp) - $tmp);

$w = get_bloginfo('wpurl');

$e = ABSPATH .'avatar/'. $f .'.jpg';

$t = 1209600; //设定14天,单位:秒

if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //当头像不存在或者超过了14天才会更新

copy(htmlspecialchars_decode($g),$e);

} else $avatar = strtr($avatar,array($g => $w.'/avatar/'.$f.'.jpg'));

if (filesize($e) < 500) copy($w.'/avatar/default.jpg',$e);

return $avatar;

}

add_filter('get_avatar','my_avatar');

wordpress 安装根目(即跟 wp-content 等文件夹同一目录下)下新建一个名为 avatar 的文件夹 ,并给予写权限。放入一张同尺寸的头像图片命名为 default.jpg。

多说缓存

注:多说部分头像会被回源,导致无法显示,所以也不推荐这个方案,下面的代码加到 functions.PHP

function duoshuo_avatar($avatar) {

$avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.duoshuo.com",$avatar);

return $avatar;

}

add_filter( 'get_avatar','duoshuo_avatar',10,3 );

多说服务器稳定性不是太好,有时候会出现失效的现象。

另一个比较特别方法

打开 wordpress 程序根目录的 wp-includes 文件夹,找到 pluggable.PHP 打开,将大约 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';

不过这个方法的弊端是下次更新程序的时候,文件会被覆盖掉。以上方法主要针对使用用国内主机用户,使用国外主机这时优势突显,并不需要修改任何东西,安装头像缓存插件,将头像缓存到本地,并不影响正常使用。


最后:以上方法主要针对国内主机,使用国外的主机就没必要修改这些了。选择适合自己的方法

 

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

以上是编程之家为你收集整理的国内Gravatar头像被墙解决方法全部内容,希望文章能够帮你解决国内Gravatar头像被墙解决方法所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的wordpress相关文章

Typecho轻量,但是已经好几年没有更新,插件和模板支持已经很吃力,越来越多的人撤离了 Typecho ,转向 WordPress。
隐藏 WordPress  后台登录地址后是保证网站安全的途径之一,在隐藏的同时要将网站有关登录后台的链接删除处理。
昨天怎么都记不起网站后台的密码。网站用WordPress搭建,忘了后台密码怎么办?
实现这个功能需要依赖于PHP的GD库,没有就不行哟,虚拟主机用户要好好看看是否支持哟。
如果网站开放注册,投稿功能,有作者,编辑,订阅者,管理员。就需要针对页面进行分别调用,显示不同的模板。
之前有介绍WordPress不同分类调用不同文章模板的方法,今天给大家分享一下,不同分类模板的调用
我们在做WordPress网站中,常常需要在首页或者分类页调用摘要,显示在分类列表里面。
WordPress用户在后台上传附件提示“上级目录没有写权限”的情况一般发生在网站迁移到新站以后,如果用户在WordPress后台上传图片附件,或者在工具导入中导入网站数据时,遇到错误以下提示: