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网站提速三大“软”招
Oct 09 PHP
理解PHP5中static和const关键字的区别
Mar 19 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
php知道与问问的采集插件代码
Oct 12 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
Symfony2联合查询实现方法
Mar 18 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 PHP
Laravel实现ApiToken认证请求
Oct 14 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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列出mysql表所有行和列的方法
2015/03/13 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
最新28个很棒的jQuery 教程
2011/05/28 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
python实现贪吃蛇游戏
2020/03/21 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
奥地利网上书店:Weltbild
2017/07/14 全球购物
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
学生会副主席竞聘书
2014/03/31 职场文书
应届生面试求职信
2014/07/02 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
六一儿童节标语
2014/10/08 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
TV动画《间谍过家家》公开PV
2022/03/20 日漫
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android