让willin简单头像缓存函数my_avatar()真正支持alt

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

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)

其实最重要就是参数啦,喜欢折腾的朋友折腾吧。

zww
or
oooo

“让willin简单头像缓存函数my_avatar()真正支持alt”有167条评论

  1. winy says:

    表示看过了,还是用插件方便

    1. zwwooooo says:

      @winy 插件非常方便不用折腾

    2. winy says:

      @zwwooooo 插件才不用折腾。。。因为这个所有的主题都用得上

      1. zwwooooo says:

        @winy
        所以说插件简单好用不用折腾

  2. cho says:

    加入了alt属性有什么好处呢?利于搜索引擎的蜘蛛来 :?: 爬?

    1. A.shun says:

      @cho 提高yslow和page speed的分数

    2. zwwooooo says:

      @cho 总是有好处才会折腾一下

  3. A.shun says:

    啊啊,居然来晚了。。 :shock:

    1. zwwooooo says:

      @A.shun 哈哈,早不如刚好

  4. 1pondo says:

    willin 是个牛人,经常不用插件,几行代码就解决问题

    1. zwwooooo says:

      @1pondo 对,可惜退隐了

  5. ifenwen says:

    还是这个折腾有水准 要不用google的monster一看全是图片警告

    1. zwwooooo says:

      @ifenwen 哈哈,一直懒得去改

  6. ugg boots says:

    图文合理搭配 排版也很好啊!

    1. zwwooooo says:

      @ugg boots 你那里看到图了?别说广告……

  7. BoKeam says:

    我一直想改改可是不会,z大弄出来省心了 :mrgreen:

    1. zwwooooo says:

      @BoKeam 这……那就用吧

  8. 老饕 says:

    呵呵~~我折腾过了~~
    PS:需要票票~具体见博客~呵呵

    1. zwwooooo says:

      @老饕
      已投,嘿嘿

  9. 球犯 says:

    学习了 感谢分享 感谢willin的宣传大使!

    1. zwwooooo says:

      @球犯
      囧~什么时候变成宣传大使

  10. 哇塞,你的主题效果真的很棒,特别是上面的主题预览

    1. zwwooooo says:

      @皇家元林
      这个啊,简单的jq吧

  11. QiQiBoY says:

    alt没啥用吧,我感觉怎么一直是空的。。它从来不会自动填入访客昵称,即使用wordpress默认的,没用缓存。。

    1. zwwooooo says:

      @QiQiBoY
      函数里面$alt这参数没啥用,真不知道wp为啥有这个参数又不让它工作

  12. [...] This post was mentioned on Twitter by Max Lee, zwwooooo. zwwooooo said: 让willin简单头像缓存函数my_avatar()真正支持alt http://goo.gl/fb/2EDdA [...]

  13. 阿七 says:

    用的yang的缓存插件,发现willin的缓存插件托速度。

    1. zwwooooo says:

      @阿七
      缓存插件一开始比较拖速度,因为要copy图片

  14. Max Lee says:

    之前用插件却不成功,试试这个。。。

    1. zwwooooo says:

      @Max Lee
      插件应该更简单啊

  15. 冒似我进黑名单了??

  16. 我好像进Ak的黑名单了,难道你这里没装AK?? :cry:

    1. zwwooooo says:

      @亿品元素
      有AK,但我没去用而已

    2. yetone says:

      @亿品元素
      AK误杀率很高啊

  17. 朵未 says:

    这个我还没折腾成功。不知道是不是inove主题问题还是框套问题。。。

    1. zwwooooo says:

      @朵未
      有个前提:你的主机需要支持copy()这个函数

  18. 毕业园 says:

    貌似把它写成插件更方便

    1. zwwooooo says:

      @毕业园
      插件当然方便了,不过有类似插件

  19. 说实在的,有点看不明白怎么用,还是用旧版算了

    1. zwwooooo says:

      @亿品元素
      一般不需要这么折腾

  20. LAONB says:

    这是利于SEO吧,反正ALT没有值似乎W3C会提示。

    1. zwwooooo says:

      @LAONB
      应该是吧

发表评论

昵称 *

网址

B em del U Link Code Quote