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编码转换
Nov 05 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
浅谈laravel aliases别名的原理
Oct 24 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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合并数组中相同元素的方法
2014/11/13 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
前端性能优化建议
2020/09/17 Javascript
Python字符遍历的艺术
2008/09/06 Python
python字典get()方法用法分析
2015/04/17 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python抓取网页中链接的静态图片
2018/01/29 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
Python中dict和set的用法讲解
2019/03/28 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
学生学习总结的自我评价
2013/10/22 职场文书
前台文员岗位职责
2015/02/04 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
Android 中的类文件和类加载器详情
2022/06/05 Java/Android