Only U is in my heart!
I will be right here waiting for you.

修正wordpress主题Tstyle侧边栏最新评论头像显示异常

回复哥们评论的时候发现,他的头像在侧边栏siderbar最新评论里面的头像显示不正常,正文评论里面的显示正常。其他部分用户的头像在侧边栏,也显示正常。估计是代码有点小问题了。

查看siderbar的代码发现最新评论跟最新留言是调用的recent_comment()这个函数来实现的。OK,到functions.php里面去找相关的函数。很容易找到recent_comment()这个函数的位置。慢慢读一下代码,发现头像的获取并不是通过wordpress的get_avatar()这个函数来实现的。是通过自己组合的Gravatar头像url然后用<img src="’.$grav_url.’" alt="" />输出的。在第33行我们发现了$grav_url这个变量,这个变量便是Gravatar头像的url。把代码贴出来分析:

$grav_url="http://www.gravatar.com/avatar/".md5($email)."?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32";

通过分析发现,这段代码的关键是这里".md5($email).",即是通过将评论者的Email地址进行md5加密,再将md5值到Gravatar服务器查询便可得到Email对应的头像。那为什么不能显示呢?通过对比同一个人正文评论处正常显示的头像跟侧边栏最新评论非正常显示的头像的url发现(好绕口T-T!),两者同一个邮箱通过md5加密后的所获取的密文竟然不一样。真是费解诡异。

查看comments.php代码发现,正文底部评论者的头像是通过get_avatar()这个函数来获取的。难道自己组合的头像URL地址有问题?不经意间发现这哥们的邮箱后缀为Live.cn。大小写不同md5加密后的密文是不同的。难道是这个原因?!试下,将头像的url代码改为:

$grav_url="http://www.gravatar.com/avatar/".md5( strtolower ($email) )."&d=http://www.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s=32";

Strtolower()这个函数的作用是将字符串的大写改成小写。保存刷新,显示正常。

我勒个去…差点没把我雷死!!!看来Gravatar注册的时候是区分字母大小写的,即使是用含有大写字母的邮箱注册,他也会给强制转换成小写的。开发主题的注意了…

赞(0) 打赏
未经允许不得转载:Onlyisu » 修正wordpress主题Tstyle侧边栏最新评论头像显示异常

相关推荐

  • 暂无文章

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏