让get avatar函数获得的gravatar图片真正支持alt属性

  • A+
所属分类:随笔分享

相信对于gravatar大家都不会陌生,只要有一个email地址,便可以在任何支持gravatar的地方显示自己个性头像。所以对于那些还没有头像的童鞋,建议还是去搞一个,地址:http://www.gravatar.com/。但对于wordpress来说,通过此法获得的gravatar图片往往没有alt属性,或者属性为空,显然不符合w3c的标准。那到底可否实现alt属性不为空呢?答案自然是可行的。

首先打开网站根目录下的wp-includes文件夹,再打开里面的pluggable.php文件。(或许很多人对这个文件并不熟悉,其实我也是一样,非常陌生,不过看了里面的内容,才发现原来好多wordpress的好多功能都在里面。从其文件大小高达58KB便可见其内容不一般了。)言归正传,搜索get_avatar便直达gravatar头像的设置处。默认文件内容一般如下:
[php]
function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
if ( ! get_option('show_avatars') )
return false;

if ( false === $alt)
$safe_alt = '';
else
$safe_alt = esc_attr( $alt );[/php]
明眼人一看就知道,由于“$alt = false”、“$safe_alt = '';”的设置,必然导致最后的alt输出为空,所以最简单最直接的方法就是将第一行的$alt = false改成$alt = true即可。如此这般,再去查看源文件的时候,便会发现gravatar图片的alt属性都有值了,只不过每个值都是“1”而已。

如果对此不满意者,还可以做进一步修改。保留第一句不动,更改$safe_alt部分值,即上述代码改成:
[php]function get_avatar($id_or_email, $size = '96', $default = '', $alt = false ) {
if ( ! get_option('show_avatars') )
return false;

if ( false === $alt)
$safe_alt = get_comment_author($id);
else
$safe_alt = esc_attr( $alt );[/php]
关键部分就在于get_comment_author($id),经过此番设置,alt的返回值变成了留言者的用户名,相信这也是多数人的意愿吧。

看似简单,不过还是折腾了很长一段时间。问题在于$id的选择,如果不考虑侧边栏的“本月水王”,换成$id_or_email什么的都可以,而且和最新评论了里的头像输出也有关系,往往是鱼和熊掌不可兼得,所以无奈之下只好先将最新评论部分的头像显示去除,等想到更好的办法之后再加上去。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:53   其中:访客  53   博主  0

    • 逗妇鲁 逗妇鲁 4

      文章不错,加油

      • zwwooooo zwwooooo 5

        你也折腾鸟~

        • 购达码 购达码 1

          博主的研究得好深嘛

          • 脱发吃什么 脱发吃什么 0

            向博主学习哦!

            • 加气混凝土设备 加气混凝土设备 0

              呀呀呀呀……得试试,哈哈……

              • 我爱Cydia 我爱Cydia 1

                我开始以为函数在function.php里面,找不到,不愿意修改wp-admin,不知道能否设置图片缓存自定义alt?

                • 朱定聪 朱定聪 0

                  感谢博主分享,试了确实能用,提供大家预览:http://www.congblog.cn/

                  • 不羁 不羁 1

                    搞了一天也没弄好 http://www.jinjingwang.com 天猫网