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开发中的安全防范知识详解
Jun 06 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
php实现数组重复数字统计实例
Sep 30 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
Dec 24 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
PHP单元测试配置与使用方法详解
Dec 27 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
浅谈如何提高PHP代码的质量
May 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实现图象锐化代码
2007/06/14 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
python服务器端收发请求的实现代码
2014/09/29 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python函数装饰器实现方法详解
2018/12/22 Python
python如何实现word批量转HTML
2020/09/30 Python
python如何修改文件时间属性
2021/02/05 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
立志成才演讲稿
2014/09/04 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
绵山导游词
2015/02/05 职场文书
前台岗位职责范本
2015/04/16 职场文书
校运会通讯稿
2015/07/18 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
vue中 this.$set的使用详解
2021/11/17 Vue.js
maven依赖的version声明控制方式
2022/01/18 Java/Android
工厂无线对讲系统解决方案
2022/02/18 无线电