现在的位置: 首页 > Wordpress > WP技巧 > 正文
让get avatar函数获得的gravatar图片真正支持alt属性
2010年09月06日 WP技巧 ⁄ 共 1173字 评论数 53 ⁄ 被围观 9,000+

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

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

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 );

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

如果对此不满意者,还可以做进一步修改。保留第一句不动,更改$safe_alt部分值,即上述代码改成:

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 );

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

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



【上篇】
【下篇】

目前有 53 条留言 其中:访客:53 条, 博主:0 条

  1. 逗妇鲁 : 2010年09月09日02:35:01  31楼

    文章不错,加油

  2. zwwooooo : 2010年09月09日15:55:24  32楼

    你也折腾鸟~

  3. 购达码 : 2010年09月14日17:41:41  33楼

    博主的研究得好深嘛

  4. 脱发吃什么 : 2010年09月29日09:35:50  34楼

    向博主学习哦!

  5. 加气混凝土设备 : 2011年03月15日15:22:08  35楼

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

  6. 我爱Cydia : 2011年07月11日20:22:32  36楼

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

  7. 朱定聪 : 2011年12月12日08:57:03  37楼

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

  8. 不羁 : 2012年01月12日10:39:25  38楼

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


如果觉得文章或者网站对您有帮助请点击 向TA付款 捐赠作者或者点击下面的分享按钮支持作者

更多

给我留言

留言无头像?

无觅相关文章插件,快速提升流量

×