之前使用的那款主题自带有开启或关闭Gravatar头像缓存的功能,觉得加载速度要快一些,当然除了那些服务器在国外、国内访问速度极慢的站,开了头像缓存还不如不开。
废话不多说,昨天刚换的新主题,一切折腾又开始了,首先就是要开启头像缓存
在根目录下建立一个文件夹avatar,权限755。再在里面放一个默认的头像(default.jpg),没头像的童鞋就会用默认的。
然后是定义一个函数。
- 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;
- 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', 'my_avatar');
把上面两段代码都丢进主题theme下的functions.php文件就行了。
一步是要注意的。得要确认在调用头像的地方都是用get_avatar函数来完成的。一般都是了,只有以前老的theme才不是。不是的话改过来就行。
如把:
- <?php echo get_avatar( $comment, 40 ); ?>
改为:
- <?php echo get_avatar( $comment->comment_author_email, $size = '40', $default = get_bloginfo('wpurl') . '/avatar/default.jpg' ); ?>
这里一定要改,不然自定义没头像的不显示为你自定义的。