改成所有头像都缓存了–凡是没头像的统一猫头  

继上一次的 最佳评论员续–关于avatar头像的缓存处理 后,发现出列最热评论员改了,其他的头像还是继续gravatar,怨念
正好还有其他错误,一锅端了
代码搜集自网上,然后下面这样 

function get_cache_avatar($email, $size = '35', $default = '', $alt = '' ) {
  error_reporting(0);
  $alt = esc_attr( $alt );
  $f = md5( strtolower( $email ) );
  $w = get_bloginfo('wpurl'); // 如果想放在 wp-content 路徑之下, 改為 $w = WP_CONTENT_URL;
  $a = $w. '/avatar/'. $f. '.jpg';
  $e = ABSPATH. 'avatar/'. $f. '.jpg'; // 如果想放在 wp-content 路徑之下, 改為 $e = WP_CONTENT_DIR. '/avatar/'. $f. '.jpg';
  $t = 1209600; //读取周期14天,单位:秒
  if ( empty($default) ) $default = $w. '/avatar/default.jpg';
	  try{//读取失败,干脆不读了.反正肯定又是gravatar喵了.直接丢个异常处理完事.要不然只要卡了就悲剧~~~
		  if ( !is_file($e) || (time() - filemtime($e)) > $t ){ //头像不存在或文件超過14天才更新
			$r = get_option('avatar_rating');
			//$g = sprintf( "http://%d.gravatar.com", ( hexdec( $f{0} ) % 2 ) ). '/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r; // wp 3.0 的服務器
			$g = 'http://www.gravatar.com/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r; // 旧服务器
			copy($g, $e); $a = esc_attr($g); //新头像 copy 時, 取 gravatar 显示
		  }
		  if (filesize($e) < 50) copy($default, $e);
	  }catch(Exception $e)
		{
			echo "<img title='{$alt}' alt='{$alt}' src='/avatar/default.jpg' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
		}
	  echo "<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}

还要替换出现get_avatar函数的地方
get_cache_avatar($comment->comment_author_email, 35)

自己看效果吧,真睡了

欢迎大佬支持本博客的发展 -- Donate --

本文链接:改成所有头像都缓存了--凡是没头像的统一猫头

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
    • DH
    • 2011年08月18日

    最佳评论员相对比最近评论固定,所以用图片缓存比较靠谱

    • 你也加上缓存吧,我测试着还行
      现在控制台的头像我没缓存,真像你说的自己看的就没什么了

  1. 没有通告