A-A+

修复被墙的Gravatar头像

2010年10月18日 Wordpress 评论 40 条 阅读 18,952 views 次

从前几天开始,博客上的Gravatar的镜像站被我们伟大的墙给干掉了,好多博客上面的头像都变成了叉叉,开始还以为是我网络的问题,后来经过小黑的提醒,才知道这是伟大城墙的杰作,想不到我们伟大的长城连我们的头像都不放过,佩服,也怪Wordpress的官方,为啥要在3.0版本后的代码里直接调用Gravatar的镜像站,而不是想2.9以前都是调用主站的,要是那天连主站都墙了,那谁也怨不着了,只能怪自己生错地方了。

下面是小黑提供给我的恢复方法:
在wp-includes文件夹下 pluggable.php 文件,大约1645行。将下面的代码

if ( is_ssl() ) {
$host = 'https://secure.gravatar.com';
} else {
if ( !empty($email) )
$host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash{0} ) % 2 ) );
else
$host = 'http://0.gravatar.com';
}

改为

if ( is_ssl() )
$host = 'https://secure.gravatar.com';
else
$host = 'http://www.gravatar.com';

除了这个方法还有一米提供的缓存头像的方法,不过这种方法之适合服务器在国外的博客:

// 头像缓存
function my_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 ) { //当头像不存在或文件超过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');

将以上代码添加到博客的function.php文件,同时在wp-content目录的同级目录下建立avatar文件夹,并且建立一个以default.jpg命名的默认图像,也就是如果评论者没有头像的话,用它替换,不然还是叉叉。

另外网上还有高手为此做了一个插件,叫Gravatar Fixed,其实原理和上面提到的第一种方法一样,就是替换头像图片地址,这里就不多做介绍了,不喜欢加代码的朋友可以直接安装插件搞定,该插件下载:原作者下载地址千脑网盘下载

40 条留言  访客:0 条  博主:0 条

  1. iMJMJ
  2. 何朝城
  3. asa
  4. asa
  5. 土木坛子
  6. 水车
  7. 呆呆虎
  8. su
  9. an9
  10. 经典美剧
  11. 先看看
  12. 玳玳
  13. 搓板
  14. 小邪
  15. Firm
  16. 濟川
  17. smigoo
  18. 菠萝
  19. 菜牛
  20. 小杰
  21. 雅丹
  22. 一夜雨天
  23. 龙城瓶子
  24. 超人
  25. 虫儿
  26. 武龙杰微博客
  27. 学夫子
  28. 卢松松
  29. huangjun

给我留言

Copyright © 虫子窝 保留所有权利.   Theme  Ality

用户登录

分享到: