WordPress中用于获取及自定义头像图片的PHP脚本详解
get_avatar()(获取头像)
get_avatar()函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用。
这个函数提供一个get_avatar过滤器,用来过滤头像的Html代码(img标签)。
如果在后台“设置”的“讨论”里关闭“显示头像选项”则返回False.
用法
get_avatar($id_or_email,$size,$default,$alt);
参数
$id_or_email
(整数|字符串|对象)(必须)用户的ID;邮箱;评论或者用户的对象。如果在循环中可以使用get_the_author_meta('ID')函数调用当前文章的作者。
默认值:None
$size
(整数)(可选)头像的尺寸,最大为512,单位为像素(px)。
默认值:96
get_avatar()(获取头像)
$default
(字符串)(可选)如果没有头像返回的图片,默认为“神秘人”,可以是图片URL.
默认值:空字符串(神秘人)
$alt
(字符串)(可选)头像img标签的alt属性内容。
默认值:False
返回值
(字符串|布尔)返回一个头像的img标签,如果在后台“设置”的“讨论”里关闭“显示头像选项”则返回False.
例子
评论列表:
<?phpechoget_avatar($GLOBALS['comment']);?>
循环,获取当前文章作者头像:
<?phpechoget_avatar(get_the_author_meta('ID'),32);?>
自定义邮箱:
<?phpechoget_avatar('email@example.com',32,'','自定义邮箱');?>
自定义头像图片的alt标签
WordPress默认使用的是Gravatar头像,通过get_avatar()函数调用,一般用来在调用评论的时候使用。
利用get_avatar()函数的第四个属性$alt可以设置返回代码的alt标签,但是大多数人在使用的时候都不会去设置,也就变成了空白。
搜索引擎的爬虫是无法读取图片上到底是什么内容的,只能靠它的alt标签,没有了alt标签的图片,对SEO是非常不好的。
如果想要给所有的头像都统一加上一个alt标签,可以把下边的代码放到主题的functions.php(了解更多)文件。
/** *WordPress自定义头像图片的alt标签 *根据不同的人生成不同的alt标签 *http://www.endskin.com/avatar-alt/ */ functionBing_avatar_alt($avatar){ $alt='Gravatar头像';//alt标签的内容 $before=strpos($avatar,"alt='"); $after=strpos($avatar,"'",$before); if($before===false||$after===false)return$avatar; $alt=esc_attr($alt); returnsubstr($avatar,0,$before)."alt='$alt".substr($avatar,$after+strlen("'")); } add_filter('get_avatar','Bing_avatar_alt');
这样就行了,注意修改代码里的$alt变量为你要修改成的alt标签内容。
根据不同的人生成不同的alt标签
如果要根据不同的人放置不同的alt标签可以用下边的例子代码:
/** *WordPress自定义头像图片的alt标签 *http://www.endskin.com/avatar-alt/ */ functionBing_avatar_alt($avatar,$id_or_email){ if($id_or_email=='bingoblog@163.com'||$id_or_email===1){ $alt='博主Gravatar头像';//博主的alt标签内容 }else{ $alt='Gravatar头像';//普通访客的alt标签内容 } $before=strpos($avatar,"alt='"); $after=strpos($avatar,"'",$before); if($before===false||$after===false)return$avatar; $alt=esc_attr($alt); returnsubstr($avatar,0,$before)."alt='$alt".substr($avatar,$after+strlen("'")); } add_filter('get_avatar','Bing_avatar_alt',10,2);
如果已经设置alt标签则不替换
如果你需要在已经设置alt标签的内容(get_avatar()函数的$alt属性)则不替换的时候可以用下边的代码:
/** *WordPress自定义头像图片的alt标签 *如果已经设置alt标签则不替换 *http://www.endskin.com/avatar-alt/ */ functionBing_avatar_alt($avatar,$id_or_email,$size,$default,$alt){ if(!empty($alt))return$avatar; $alt='Gravatar头像';//alt标签的内容 $before=strpos($avatar,"alt='"); $after=strpos($avatar,"'",$before); if($before===false||$after===false)return$avatar; $alt=esc_attr($alt); returnsubstr($avatar,0,$before)."alt='$alt".substr($avatar,$after+strlen("'")); } add_filter('get_avatar','Bing_avatar_alt',10,5);