>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2012.03.19 Update:最新的详细方法到此新文章《重新整理: willin简单头像缓存函数my_avatar()》
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
文章题目不知怎么说,算了,应该能清楚鸟。
willin最新版那个简单头像缓存函数 my_avatar() 里面的 $alt 参数其实是没有作用的,即使你设置为 true ,返回的只是 1,所以不能达到显示头像的 alt 值。
昨天 a-shun 提起要我帮忙解决一下,我稍微修改了一下解决鸟,顺便解决文囧问题。
最近有点文囧,所以简单的折腾也贴出来了……
『诶~不知道说啥,拖些长度,因为下面是代码,前面太少内容会影响美观』
先看看原来的代码:
(代码原文:http://kan.willin.org/?p=1277)
/* Mini Gavatar Cache by Willin Kan. */ function my_avatar($email,$size='42',$default='',$alt=false){ $alt=(false===$alt)?'' : esc_attr($alt); $f=md5(strtolower($email)); $a= get_bloginfo('wpurl').'/avatar/'.$f.'.jpg'; $e= ABSPATH.'avatar/'.$f.'.jpg'; $t=1209600;//設定14天, 單位:秒 if(empty($default))$default= get_bloginfo('wpurl').'/avatar/default.jpg'; 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); } if(filesize($e)<500) copy($default,$e); $avatar="<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; return apply_filters('my_avatar',$avatar,$email,$size,$default,$alt); }>
具体怎么折腾willin的头像缓存我就不罗嗦了,去willin那里吧(貌似这几天博客挂了),等好了再CP过来加在这里吧,方便大家
附willin最新版简单头像缓存函数折腾方法:(待续,这里留空...)
那么继续我刚才说的,让函数真正支持头像的 alt 显示,代码变为如下:
/* Mini Gavatar Cache by Willin Kan. */ function my_avatar($email,$size='42',$default='',$alt=''){ // $alt = (false === $alt) ? '' : esc_attr( $alt ); $alt=(''==$alt)?'' : $alt; $f=md5(strtolower($email)); $a= get_bloginfo('wpurl').'/avatar/'.$f.'.jpg'; $e= ABSPATH.'avatar/'.$f.'.jpg'; $t=1209600;//設定14天, 單位:秒 if(empty($default)) $default= get_bloginfo('wpurl').'/avatar/default.jpg'; // 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); } if(filesize($e)<500) copy($default,$e); $avatar="<img title='{$alt}' alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; return apply_filters('my_avatar',$avatar,$email,$size,$default,$alt); }
很简单,主要是用法稍微不同:
my_avatar( $email, $size = '40', $default = '', $alt = '' )
$email: 评论者email
$size: 头像图片大小
$default: 默认头像位置,如果你不设置,那么在 avatar 缓存目录放一个 default.jpg 作为默认头像。
$alt: 评论者昵称
举例
1. 文章评论页面调用一般是这样:
<?php echo my_avatar($comment->comment_author_email,$size='40',$default='',$comment->comment_author);?>
不需要定义$default和$alt,下面这样就可以了
<?php echo my_avatar($comment->comment_author_email,$size='40');?>
2. 最新评论代码里(《带头像显示的最新评论代码 - 蛋疼篇》)是这样的:
my_avatar($rc_comm->comment_author_email,$size='40',$default='',$rc_comm->comment_author)
其实最重要就是参数啦,喜欢折腾的朋友折腾吧。
- 本文标题:让willin简单头像缓存函数my_avatar()真正支持alt
- 本文链接:https://zww.me/archives/25296
- 发布时间:2010年09月03日 10:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
发现一个问题,为什么头像上面不显示评论数了?
@BoKeam
囧~忘了改回去鸟。稍后改去
@zwwooooo
怎么改的
@BoKeam
把my_avatar()参数改一下啊,把alt改为评论数量不就可以了
[...] WordPress在默认情况下Gavatar头像是没有Alt属性的。相信有很多人都有使用读者墙,用了读者墙的就多半有使用Willin Kan的《簡易的 Gravatar 頭像緩存》或《新版 Gravatar 緩存》,对于使用简单头像缓存中有my_avatar()函数的修改可以参考Zww的《让willin简单头像缓存函数my_avatar()真正支持alt》,我这里说的是新版Gravatar缓存中的下面这一段代码(其实和这个没什么关系) 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; //設定14天, 單位:秒 if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新 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'); [...]
為什麼我改了alt還是一樣是...alt=''
@小奎
文章里面说了,要传递参数,主要看alt的值
[...] 资料来源:http://zww.me/archives/25296 关键字: Gavatar, Gavatar缓存, my_avatar, WordPress头像缓存 上一篇 移动硬盘、U盘无法停止‘通用卷’设备解决办法 优蛋绿色单文件版1.2.39.98-115网盘专用客户端 下一篇 ◎本站提供的所有资源均来源于网络,版权归原作者所有。仅供交流分享之用,请勿用于商业用途。 ◎一切商业形式的运用均与本站无关,涉及版权问题的资源请于下载后24小时内删除,建议购买正版。 喜欢壹品集的文章吗?那就通过 RSS Feed 功能订阅阅读吧! [...]
最近常看到哈,我直接使用插件搞定!!
我也用了这个缓存应用 。
@zigbee
我用了一年多了,很不错
请教一个问题,这种将gravatar头像缓存到服务器的做法,会加重服务器负担吗?如果服务器流量每月有限制,会造成每月流量不足吗?请详解!谢谢,我刚实现缓存了,有疑问。
@木本无心
一个头像图片有多大?你的每天流量和评论数大么?自己计算一下就知道了,我这头像图片对于流量来说可以忽略不计。
zww,我的有个问题,评论出现了乱码,麻烦你有空了给看看吧。(23楼)http://www.xishao.net/wp/518.html/comment-page-2#comment-1671
@奚少
你是不是忘记放默认头像图片(default.jpg)到缓存文件夹了?
发现了过去留言的大面积错误,而且公子府反映他的也是。zww大哥什么时候有空了麻烦给分析一下哦,嘿嘿,谢谢咯~
@zwwooooo
我用的默认图片为png格式的,不过我在源代码中也有修改的。公子(gongzi.me)说他的也有,是以前的留言有,新的没有出现过。没事,我直接去把那条留言干掉吧,嘿嘿~
@zwwooooo
提示的是“ if (filesize($e) < 500) copy($default, $e);”这一句有错误,Warning: copy(创意网) [function.copy]: failed to open stream: No such file or directory in /home/xishao/domains/xishao.net/public_html/wp-content/themes/WPSummer/functions.php on line 96
@zwwooooo
http://www.xishao.net/guestbook/comment-page-1#comments ,这一页尤其明显...
@奚少
我直接将内些留言删除叻。。
来向zww兄报告一声,我的那个头像部分地方显示乱码的问题解决了。在显示评论的头像的地方我发现我用了comment_author_email, $size = ’28′ ,$comment->comment_author); ?>
导致头像显示不正常,然后我删除了$comment->comment_author,万事就ok了,嘿嘿。
@奚少
$comment->comment_author这个要根据你的主题修改参数,不能硬套
博主,这个方法不错,可以做成插件吗?
@月夜相酌,情
有类似的插件,目前我没有做过插件,还木有打算研究。
发现点问题(也不知道算不算问题),就是如果很多没有头像的朋友留言后,也会生成很多默认头像,(那些默认头像的都是以不同的md5来命名的,但是他们其实是相同的一张默认头像),这样就容易造成缓存文件夹很多相同的头像图片,我现在的文件夹中就有几千个了
@花皙蔻
本来就是这样的,没有头像的用默认头像代替(复制)
请假一点,我想缓存作者头像,还有登陆用户的头像,要修改哪里的代码呢??
@花皙蔻
?????你加了缓存功能不就自动会缓存了么?
搞不定 等你更新吧!
@平板电脑推荐
不会吧,你还没搞定?
@zwwooooo
没搞定,我直接后台把头像功能关了,速度飞快
@平板电脑推荐
这……出钱请我吧,反正你这网站肯定赚钱,哈哈哈
@zwwooooo
是有想过,要是你不太贵我就把主题给你本地化一下,本身是国外的主题。
谢谢,已经用上!
使用了这段代码后,头像直接从原始服务器获取,而不是使用缓存,不知道哪里出错了
@chonghua
检查一下“写入”部分