You are here: Home » All Categories » WordPress » WP Trick » 让willin简单头像缓存函数my_avatar()真正支持alt

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

Sep 3rd, 2010 10:18 | Leave a comment?(159) Go to comments

文章题目不知怎么说,算了,应该能清楚鸟。

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('template_directory'). '/img/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);
}
// -- END ----------------------------------------

具体怎么折腾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('template_directory'). '/img/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);
}
// -- END ----------------------------------------

很简单,主要是用法稍微不同

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)

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

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25296

Filed under

WP Trick

| Tags:

, ,

Related Posts

Most Popular

159 Comments.

⊕Leave a comment?
  1. BoKeam BoKeam Google Chrome 7.0.514.0Windows 7

    发现一个问题,为什么头像上面不显示评论数了? :shock:

    61楼
  2. 小奎 小奎 Google Chrome 6.0.472.55Windows XP

    為什麼我改了alt還是一樣是...alt=''

    63楼
  3. zen cart zen cart Firefox 3.6.9Windows XP

    最近常看到哈,我直接使用插件搞定!!

    65楼
  4. zigbee zigbee Google Chrome 6.0.472.63Windows XP

    我也用了这个缓存应用 。 :evil: :evil:

    66楼
  5. 木本无心 木本无心 Google Chrome 6.0.472.59Windows XP

    请教一个问题,这种将gravatar头像缓存到服务器的做法,会加重服务器负担吗?如果服务器流量每月有限制,会造成每月流量不足吗?请详解!谢谢,我刚实现缓存了,有疑问。

    67楼
    • zwwooooo zwwooooo Google Chrome 8.0.552.5Windows 7

      @木本无心
      一个头像图片有多大?你的每天流量和评论数大么?自己计算一下就知道了,我这头像图片对于流量来说可以忽略不计。

  6. 奚少 奚少 Firefox 3.6.13Windows 7

    zww,我的有个问题,评论出现了乱码,麻烦你有空了给看看吧。(23楼)http://www.xishao.net/wp/518.html/comment-page-2#comment-1671

    68楼
    • zwwooooo zwwooooo Firefox 3.6.13Windows 7

      @奚少
      你是不是忘记放默认头像图片(default.jpg)到缓存文件夹了?

      • 奚少 奚少 Firefox 3.6.13Windows 7

        发现了过去留言的大面积错误,而且公子府反映他的也是。zww大哥什么时候有空了麻烦给分析一下哦,嘿嘿,谢谢咯~

    • 奚少 奚少 Firefox 3.6.13Windows 7

      @zwwooooo
      我用的默认图片为png格式的,不过我在源代码中也有修改的。公子(gongzi.me)说他的也有,是以前的留言有,新的没有出现过。没事,我直接去把那条留言干掉吧,嘿嘿~

    • 奚少 奚少 Firefox 3.6.13Windows 7

      @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

    • 公子 公子 ChromePlus 1.4.1.0Windows XP

      @奚少
      我直接将内些留言删除叻。。

  7. 奚少 奚少 Firefox 3.6.13Windows 7

    来向zww兄报告一声,我的那个头像部分地方显示乱码的问题解决了。在显示评论的头像的地方我发现我用了comment_author_email, $size = ’28′ ,$comment->comment_author); ?>
    导致头像显示不正常,然后我删除了$comment->comment_author,万事就ok了,嘿嘿。

    69楼
  8. 月夜相酌,情 月夜相酌,情 Internet Explorer 8.0Windows 7

    博主,这个方法不错,可以做成插件吗?

    70楼
  9. 花皙蔻 花皙蔻 TheWorld BrowserWindows XP

    发现点问题(也不知道算不算问题),就是如果很多没有头像的朋友留言后,也会生成很多默认头像,(那些默认头像的都是以不同的md5来命名的,但是他们其实是相同的一张默认头像),这样就容易造成缓存文件夹很多相同的头像图片,我现在的文件夹中就有几千个了

    71楼
  10. 花皙蔻 花皙蔻 TheWorld BrowserWindows XP

    请假一点,我想缓存作者头像,还有登陆用户的头像,要修改哪里的代码呢??

    72楼

Leave a Reply