各种忙碌,不多说了,许久未来,gravatar被墙已经有一阵了,看了下本地的头像缓存全成了默认头像,还好没有影响到访问速度,下面是最新的缓存到本地的代码,解决了gravatar被墙的问题,依旧是替换原来functions.php中的相关代码,清除掉你本地的缓存图片,让重新生成吧~~
可能现在本站有部分页面打开较为缓慢,是因为正在生成新的缓存头像,会慢点,打开过一次就OK了,当然,别人打开过的话 也会缓存完成,你访问也就快了~
function my_avatar( $email, $size = '42', $default = '', $alt = '') { $f = md5( strtolower( $email ) ); // 以下代码将头像缓存到wp-content目录下 $a = 'http://a.zpc.me/'. $f . $size . '.png'; $e = WP_CONTENT_DIR . '/avatar/' . $f . $size . '.png'; $d = WP_CONTENT_DIR . '/avatar/' . $f . '-d.png'; if($default=='') $default = 'http://a.zpc.me/default.jpg'; $t = 2592000; // 缓存有效期30天, 这里单位:秒 if ( !is_file($e) || (time() - filemtime($e)) > $t ) { if ( !is_file($d) || (time() - filemtime($d)) > $t ) { // 验证是否有头像 $uri = 'https://secure.gravatar.com/avatar/' . $f . '?d=404'; $headers = @get_headers($uri); if (!preg_match("|200|", $headers[0])) { // 没有头像,则新建一个空白文件作为标记 $handle = fopen($d, 'w'); fclose($handle); $a = $default; } else { // 有头像且不存在则更新 $r = get_option('avatar_rating'); $g = 'https://secure.gravatar.com/avatar/'. $f. '?s='. $size. '&r=' . $r; copy($g, $e); } } else { $a = $default; } } $avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt); }
其他关于头像缓存的详看这篇文章吧:http://www.gongzi.org/wordpress-gavatar-cache.html
后台不显示头像的解决办法
经过上面的改动,前台是可以了,但是后台还是不显示,影响速度,所以需要做以下操作:
找到/wp-includes/pluggable.php
,将2151
行 到 2158
行的内容改成以下的:
if ( is_ssl() ) { $host = 'https://secure.gravatar.com'; } else { if ( !empty($email) ) $host = sprintf( "https://secure.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) ); else $host = 'https://secure.gravatar.com'; }
也就是将原有的0.gravatar.com之类的都改成https://secure.gravatar.com
。
好了,刷新后台吧~
主机在国内的,估计没啥用
我用代码之后网站卡的不行不行的。。
@牧羊人 里面的信息改成自己的了嘛
@公子 当然。
不过我找到了一种更有效的办法
将所有地址替换成 cn.gravatar.com