以前还想着一周更新一次博客,两周更新一次博客,至少也要一个月一更吧,结果一拖就是拖了快两个月。
题材想法什么的有得是,但是除了没时间和工作不顺的原因之外,主要还是,懒。
这几个月工作很不顺,这个就先不聊了。
这次主要说一下Gravatar,也就是wordpress自带评论的头像系统。
这里我就不再解释Gravatar了吧,总之是wordpress评论系统自带的的头像功能就是了
前一阵子某关部门在黑名单里又新添了一堆……算了,总之Gravatar是挂了。
一开始是Google的字库,接下来又是Gravatar,wordpress的服务是一个接一个挂啊。
不过我是不会去使用多说或者其他第三方评论系统的,原因参见之前的文章《致安装第三方社交评论插件的博主们》
继续使用Gavatar的思路有两种:
1、继续找寻Gavatar还没有被墙的可用服务器
2、让wordpress反向代理获取Gavatar的头像(仅适用于在墙外的wordpress)
方法一就是个权宜之计。目前看来某关部门是把一部分Gavatar服务器封掉了,但是不是全部,还有一部分服务是能用的,只要把wordpress取头像的地址换成能用的服务器地址就行了。
简单办法:
在wordpress目录下有一个wp-includes目录,里面有一个pluggable.php文件,在其约1723行(wordpress 3.8.5版本),将其if ( is_ssl() )修改为if ( is_ssl() || true )
这段代码是为了判断你的服务器是否是使用https的(大概),如果是使用https的话,那么就会从Gravatar的https服务上取头像图片,反之就走http服务。加了一个true,就表示永远取https的。
至少还没被墙,能用。
优点:改动最小
缺点:1、wordpress更新了就会变,还得手动改。现在wordpress的自动更新停不下来。2、万一这个服务器被墙了还是会失效。
方法二又分为两种:
a、每次都做反向代理
b、请求后做缓存
先说一下方法a,总之我是没搞定。我不会php也不会js,编程、脚本什么的我都不会。自己找了个php代理脚本结果差点把虚拟主机的http服务跑挂了。而且貌似很多虚拟主机都声明过严禁使用虚拟空间做代理服务,所以这个方法最后没搞定。
方法b,其实和方法a没什么区别,唯独就是会把访问过的头像缓存到wordpress服务的路径下。不过这样一来,向外的请求会大幅减少,比纯的方法a安全一点,流量消耗也会变小,还算不错。
(此方法来自v7v3)
此方法分三步:
1、在wordpress网站根目录新建一个名为avatar的文件夹,并分配可写权限(比如分个755啥的,一般主机默认目录都是755)
2、在这个目录下放一张Gravatar默认头像图片,命名为default.jpg。(这个文件用于给没有Gravatar头像的用户显示头像),注意图片大小最好对应你网站的评论头像图片大小,比如我的评论系统头像是40×40的,于是我就用这个。
3、编辑wordpress使用的主题,编辑 模板函数 (functions.php) ,在其内容下新增如下代码:
function v7v3_avatar($avatar) {
$tmp = strpos($avatar, ‘http’);
$g = substr($avatar, $tmp, strpos($avatar, “‘”, $tmp) – $tmp);
$tmp = strpos($g, ‘avatar/’) + 7;
$f = substr($g, $tmp, strpos($g, “?”, $tmp) – $tmp);
$w = get_bloginfo(‘wpurl’);
$e = ABSPATH .’avatar/’. $f .’.jpg’;
$t = 1209600; //设定还缓存时间14天,单位为秒
if ( !is_file($e) || (time() – filemtime($e)) > $t ) { //头像超过设定时间或不存在则更新
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’, ‘v7v3_avatar’);
点击更新文件,搞定。
再去看页面上的评论,现在图片是avatar目录下已缓存的图片了。
优点:不是很担心Gravatar又被墙
缺点:1、仅适合wordpress服务器也在墙外的服务器;2、增大服务器开销,会向Gravatar做请求,并且每个用户都会缓存图片到本地;3、虽然能避免wordpress更新,但是这样的话主题更新了还是会失效,不过至少主题更新是手动的;4、头像默认缓存14天,14天之内如果有用户更新了Gravatar头像,在你的网站上会没有体现;5、发现了一个BUG,首次看没有Gravatar头像的用户头像,其头像url地址还是指向Gravatar服务器的,会图裂,再次刷新页面,头像才会变成default.jpg。
总之目前不论方法1还是方法2,都是很不完善,都是权宜之计,使用不当都会造成缺点大于优点,得不偿失。均仅建议有经验的用户使用。当然我是不会推荐第三方评论系统的。
目前本站是方法1和方法2双管齐下了,对付用吧。
9 comments
Skip to comment form ↓
Glegoo
2014 年 12 月 4 日 在 上午 7:33 (UTC 8) Link to this comment
最要命的是好多国外的主题用了 Google 的东西,我感觉我真心没有那个时间去全部改成本地的………
石樱灯笼
2014 年 12 月 4 日 在 上午 10:46 (UTC 8) Link to this comment
还好,用软件把所有文件打开,用搜索把相关字段批量替换,再用浏览器分析一下看看还有没有超时就行了
Thiece
2014 年 12 月 24 日 在 下午 11:53 (UTC 8) Link to this comment
救命啊,我还在用多说
石樱灯笼
2014 年 12 月 25 日 在 上午 12:00 (UTC 8) Link to this comment
多说那么不好用
Thiece
2014 年 12 月 25 日 在 上午 12:18 (UTC 8) Link to this comment
懒,不想自己捣鼓
石樱灯笼
2014 年 12 月 25 日 在 上午 12:36 (UTC 8) Link to this comment
不要说得好像多说能用似的
Thiece
2014 年 12 月 25 日 在 上午 12:40 (UTC 8) Link to this comment
至少看起来比wp默认的好看
an9
2015 年 6 月 10 日 在 下午 11:14 (UTC 8) Link to this comment
收藏备用。
石樱灯笼
2015 年 6 月 10 日 在 下午 11:54 (UTC 8) Link to this comment
这个方法开始不靠谱了,还是建议用插件