改成所有头像都缓存了–凡是没头像的统一猫头
继上一次的 最佳评论员续–关于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)
自己看效果吧,真睡了
分享到: | |
最佳评论员相对比最近评论固定,所以用图片缓存比较靠谱
你也加上缓存吧,我测试着还行
现在控制台的头像我没缓存,真像你说的自己看的就没什么了