之前使用的那款主题自带有开启或关闭Gravatar头像缓存的功能,觉得加载速度要快一些,当然除了那些服务器在国外、国内访问速度极慢的站,开了头像缓存还不如不开。

废话不多说,昨天刚换的新主题,一切折腾又开始了,首先就是要开启头像缓存

在根目录下建立一个文件夹avatar,权限755。再在里面放一个默认的头像(default.jpg),没头像的童鞋就会用默认的。
然后是定义一个函数。




  1. function my_avatar($avatar) {   

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

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

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

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

  6.     $w = get_bloginfo('wpurl');   

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

  8.     $t = 1209600;    

  9.     if ( !is_file($e) || (time() - filemtime($e)) > $t ) {    

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

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

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

  13.     return $avatar;   

  14. }  



接着再写一条



  1. add_filter('get_avatar', 'my_avatar');  



把上面两段代码都丢进主题theme下的functions.php文件就行了。

一步是要注意的。得要确认在调用头像的地方都是用get_avatar函数来完成的。一般都是了,只有以前老的theme才不是。不是的话改过来就行。

如把:




  1. <?php echo get_avatar( $comment, 40 ); ?>  



改为:




  1. <?php echo get_avatar( $comment->comment_author_email, $size = '40', $default = get_bloginfo('wpurl') . '/avatar/default.jpg' ); ?>  



这里一定要改,不然自定义没头像的不显示为你自定义的。


最后修改:2019 年 06 月 06 日
收藏不易,如果感觉对你有用,请随意打赏支持下