- 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什么的都可以,而且和最新评论了里的头像输出也有关系,往往是鱼和熊掌不可兼得,所以无奈之下只好先将最新评论部分的头像显示去除,等想到更好的办法之后再加上去。
2010年9月9日 02:35 31楼
文章不错,加油
2010年9月9日 15:55 32楼
你也折腾鸟~
2010年9月14日 17:41 33楼
博主的研究得好深嘛
2010年9月29日 09:35 34楼
向博主学习哦!
2011年3月15日 15:22 35楼
呀呀呀呀……得试试,哈哈……
2011年7月11日 20:22 36楼
我开始以为函数在function.php里面,找不到,不愿意修改wp-admin,不知道能否设置图片缓存自定义alt?
2011年12月12日 08:57 37楼
感谢博主分享,试了确实能用,提供大家预览:http://www.congblog.cn/
2012年1月12日 10:39 38楼
搞了一天也没弄好 http://www.jinjingwang.com 天猫网