首页 > CMS > Wordpress > 正文

WordPress评论者头像缓存到本地的方法详解

2024-09-07 00:51:46
字体:
来源:转载
供稿:网友

gravatar被墙问题是各大使用gravatar头像站长朋友一个比较头痛的问题了,对此小编今天为各位整理了一篇奖WordPress评论者头像缓存到本地的解决方案,下面来看看.

各种忙碌,不多说了,许久未来,gravatar被墙已经有一阵了,看了下本地的头像缓存全成了默认头像,还好没有影响到访问速度,下面是最新的缓存到本地的代码,解决了gravatar被墙的问题,依旧是替换原来functions.php中的相关代码,清除掉你本地的缓存图片,让重新生成吧~~

可能现在本站有部分页面打开较为缓慢,是因为正在生成新的缓存头像,会慢点,打开过一次就OK了,当然,别人打开过的话也会缓存完成,你访问也就快了~ 见谅~代码如下:

  1. function my_avatar( $email$size = '42'$default = ''$alt = '') { 
  2.   $f = md5( strtolower$email ) ); 
  3.   // 以下代码将头像缓存到wp-content目录下 
  4.   $a = 'http://a.zpc.me/'$f . $size . '.png'
  5.   $e = WP_CONTENT_DIR . '/avatar/' . $f . $size . '.png'
  6.   $d = WP_CONTENT_DIR . '/avatar/' . $f . '-d.png'
  7.   if($default==''
  8.     $default = 'http://a.zpc.me/default.jpg'
  9.  
  10.   $t = 2592000; // 缓存有效期30天, 这里单位:秒 
  11.   if ( !is_file($e) || (time() - filemtime($e)) > $t ) { 
  12.     if ( !is_file($d) || (time() - filemtime($d)) > $t ) { 
  13.       // 验证是否有头像 
  14.       $uri = 'https://secure.gravatar.com/avatar/' . $f . '?d=404'
  15.       $headers = @get_headers($uri); 
  16.       if (!preg_match("|200|"$headers[0])) { 
  17.         // 没有头像,则新建一个空白文件作为标记 
  18.         $handle = fopen($d'w'); 
  19.         fclose($handle); 
  20.         $a = $default
  21.       } 
  22.       else { 
  23.         // 有头像且不存在则更新 
  24.         $r = get_option('avatar_rating'); 
  25.         $g = 'https://secure.gravatar.com/avatar/'$f'?s='$size'&r=' . $r
  26.         copy($g$e); //开源软件:Vevb.com 
  27.       } 
  28.     } 
  29.     else { 
  30.       $a = $default
  31.     } 
  32.   } 
  33.  
  34.   $avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"
  35.   return apply_filters('my_avatar'$avatar$email$size$default$alt); 

其他关于头像缓存可接着往下看,下面的缓存到本地代码,便加入了该判断,也就解决了我的问题,代码如下:

  1. //code by ludou 
  2. function my_avatar( $email$size = '48'$default = ''$alt = '') { 
  3.   $f = md5( strtolower$email ) ); 
  4.   // 以下代码将头像缓存到wp-content目录下 
  5.   $a = WP_CONTENT_URL . '/avatar/'$f . $size . '.png'
  6.   $e = WP_CONTENT_DIR . '/avatar/' . $f . $size . '.png'
  7.   $d = WP_CONTENT_DIR . '/avatar/' . $f . '-d.png'
  8.   if($default==''
  9.     $default = 'http://a.zpc.me/default.jpg'
  10.   $t = 2592000; // 缓存有效期30天, 这里单位:秒 
  11.   if ( !is_file($e) || (time() - filemtime($e)) > $t ) { 
  12.     if ( !is_file($d) || (time() - filemtime($d)) > $t ) { 
  13.       // 验证是否有头像 
  14.       $uri = 'http://www.gravatar.com/avatar/' . $f . '?d=404'
  15.       $headers = @get_headers($uri); 
  16.       if (!preg_match("|200|"$headers[0])) { 
  17.         // 没有头像,则新建一个空白文件作为标记 
  18.         $handle = fopen($d'w'); 
  19.         fclose($handle); 
  20.         $a = $default
  21.       } 
  22.       else { 
  23.         // 有头像且不存在则更新 
  24.         $r = get_option('avatar_rating'); 
  25.         $g = 'http://www.gravatar.com/avatar/'$f'?s='$size'&r=' . $r
  26.         copy($g$e); 
  27.       } 
  28.     } 
  29.     else { 
  30.       $a = $default
  31.     } 
  32.   } 
  33.  
  34.   $avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"
  35.   return apply_filters('my_avatar'$avatar$email$size$default$alt); 

在wp-content目录下创建avatar目录,权限755,把上面的代码放入function.php中 ?>前,调用头像的地方 由 get_avatar 改为 my_avatar.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表