2010年09月03日 167条评论

让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. 山头人 says:

    我不想动手。

    建议博主弄个折腾团队。专门帮别人折腾,有钱赚吗?

    1. zwwooooo says:

      @山头人
      囧~有很多人做了

  2. 柳城 says:

    你这里是用了?
    看来没成功。呵呵。
    另外,好复杂啊。

    1. zwwooooo says:

      @柳城
      用了,看侧边栏的最新评论和读者墙。评论没用

  3. 飞晏 says:

    如楼上所提示 折腾个WordPress下载功能怎么收费

    1. zwwooooo says:

      @飞晏
      下载管理功能?有这个插件鸟

    2. 飞晏 says:

      @zwwooooo
      可以让注册的用户下载吗?

    3. zwwooooo says:

      @飞晏
      好像可以吧,具体你看看这个 Download Monitor 插件

  4. 西风 says:

    外链,本人全部外链

    1. zwwooooo says:

      @西风
      你说啥呢?

  5. Alan says:

    折腾好啊,表示打开 function.php 之后又关了。囧

    1. zwwooooo says:

      @Alan
      为啥?

    2. Alan says:

      @zwwooooo
      懒惰,囧rz

  6. 把代码加在functions.php就ok么?是否要把

    comment_author_email,$size='40',$default='',$comment->comment_author); ?>

    换成

    comment_author_email,$size='40'); ?>
    1. zwwooooo says:

      @亿品元素
      不需要自定义默认图片地址(前提你在avatar目录里面放了个default.jgp做默认头像)和alt就是这样:

      comment_author_email,$size='40'); ?>
  7. 怎么我贴出来的代码好像不完整?

    1. zwwooooo says:

      @亿品元素
      代码用<code></code>括起来,我这会自动转换,不然wp会自动屏蔽

  8. fblue says:

    一直没用缓存... :!:

  9. 万戈 says:

    恩?我用过Willin的方法耶,表示alt可用 :wink:

    1. 万戈 says:

      @万戈
      演示请见我的侧边栏读者墙,有alt哟~

    2. zwwooooo says:

      @万戈
      为啥你的能呢?不过你的博客又504了

  10. 怎么在我博客上好像还是不见alt? :evil:

    1. zwwooooo says:

      @亿品元素
      你那可以啊

  11. TTkea says:

    可以教我怎么在新页面里调用所有评论么?感觉那样回访方便些~

    1. zwwooooo says:

      @TTkea
      所有???厉害啊,如果评论很多(像我这几万了)那会卡死的,但是这个实现比较麻烦,试试qiqiboy的最新评论插件吧,可以直接回复

    2. TTkea says:

      @zwwooooo
      我想在单独的页面里分页按时间排序调用所有评论,有什么办法能实现么?或者有什么插件能实现吗?

    3. TTkea says:

      @TTkea
      杯具邮箱填错了~

    4. zwwooooo says:

      @TTkea
      直接近后台是最简单的方法 :mrgreen:

  12. 杯具,在我博客上怎么折腾不出来这种效果呢??

    1. zwwooooo says:

      @亿品元素
      你那不是本身有了么?

    2. @zwwooooo
      那是后来折腾出来的

  13. Dianso says:

    ALT一直空着,不好过W3C这些,这个我也发现了

    1. zwwooooo says:

      @Dianso
      其实可以不在意的,呵呵

  14. 流年 says:

    atb搬家完毕,所以Willin的博客已可访问

  15. 3499 says:

    3499主页网过来走访了,支持我们的话请将上网主页设为3499.cc 我们也会经常过来走访您的博客!互相支持!

    1. mice says:

      @3499
      :mrgreen: 会的会的..

    2. zwwooooo says:

      @mice
      囧~你竟然回复,算了,不删了

    3. @zwwooooo
      这个3499好搞笑

    4. Armgod says:

      @3499 你所期望的那个时代早已过去,怪只怪生不逢时

    5. zwwooooo says:

      @Armgod
      哈哈,god说的对极鸟

  16. ZYW says:

    已经在用了 :razz:

  17. 坚强网 says:

    可以做个链接吗?

  18. Ygs says:

    我用的是那个老一点的没有function的方法

    1. zwwooooo says:

      @Ygs
      用着好就行了

  19. 直接用插件了,比这个方便

    1. zwwooooo says:

      @掌柜的马甲
      嗯,插件很方便

  20. 每次过来都能发现新东西。。。吼吼。。。

回复给 zwwooooo ¬
取消回复

昵称 *

网址

B em del U Link Code Quote