WordPress中用于获取及自定义头像图片的PHP脚本详解


Posted in PHP onDecember 17, 2015

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.

例子

评论列表:

<?php echo get_avatar( $GLOBALS['comment'] ); ?>

循环,获取当前文章作者头像:

<?php echo get_avatar( get_the_author_meta( 'ID' ), 32 ); ?>

自定义邮箱:

<?php echo get_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/
*/
function Bing_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 );
  return substr( $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/
*/
function Bing_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 );
  return substr( $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/
*/
function Bing_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 );
  return substr( $avatar, 0, $before ) . "alt='$alt" . substr( $avatar, $after + strlen( "'" ) );
}
add_filter( 'get_avatar', 'Bing_avatar_alt', 10, 5 );

PHP 相关文章推荐
php 禁止页面缓存输出
Jan 07 PHP
php allow_url_include的应用和解释
Apr 22 PHP
PHP输入输出流学习笔记
May 12 PHP
yii分页组件用法实例分析
Dec 28 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 #PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 #PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 #PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 #PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 #PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 #PHP
php提交post数组参数实例分析
Dec 17 #PHP
You might like
PHP实现邮件群发的源码
2013/06/18 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
js的回调函数详解
2015/01/05 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
python 文件与目录操作
2008/12/24 Python
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
详解Python import方法引入模块的实例
2017/08/02 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
重阳节活动总结
2014/08/27 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
干部培训工作总结2015
2015/05/25 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书