在WordPress中实现评论头像的自定义默认和延迟加载


Posted in PHP onNovember 24, 2015

自定义 WordPress 默认评论头像
对于没有设置Gravatra头像的评论者来说,WordPress会显示一个你在后台设置的默认头像,可以是神秘人、空白、默认的Gravatar 标志等等。但是这些头像有一个共同的不足之处,就是不怎么美观,可看性不强!打个比方,如果你去一个博客阅读文章,但当你放心评论文章的读者头像都是小怪物、复古等一系列WordPress自动生成的“不堪入目”的头像时,你还有很浓的兴趣去阅读这个博客的文章吗?我想答案是肯定的!那么,你有没有想过,自己设计或找一个属于你博客、适合你博客的默认WordPress头像那?好了,周良就不吊大家的胃口了,让我来说一下如何不使用插件实现自定义WordPress默认评论头像的方法。

方法很简单,将下面我提供的这段代码放在你正在使用的主题functions.php文件中。

<?php
// Make a new default gravatar available on the dashboard
function newgravatar ($avatar_defaults) {
$myavatar = get_bloginfo('template_directory') . '/images/tweaker.jpg';
$avatar_defaults[$myavatar] = "Tweaker";
return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'newgravatar' );
?>

上面代码中的/images/tweaker.jpg就是自定义默认头像的相对路径,你可以自行修改图片的地址。建议将头像放到你正在使用的主题images文件下面。

延迟加载 WordPress 评论头像
修改 HTML 结构

因为前面说到在新式浏览器中的问题, 我们不能再用一般书写 HTML 图片的方式, 而是要将占位符写到 src 属性, 而将真正的图片地址写在 data-original 属性上. 所以 WordPress 头像代码结构应该是下面这样的.

<img class="avatar" src="占位符图片.gif" data-original="头像图片.jpg" />

在 WordPress 中, 本来输出头像如下.

<?php echo get_avatar($comment); ?>

现在需要改为适合 Lazy Load 插件的结构如下.

<?php echo '<img class="avatar" src="占位符图片.gif" alt="" data-original="' . preg_replace(array('/^.+(src=)(\"|\')/i', '/(\"|\')\sclass=(\"|\').+$/i'), array('', ''), get_avatar($comment)) . '" />'; ?>

这里建议使用 loading 图片或者默认头像作为占位符图片.

添加 Lazy Load 支持

打开 footer.php, 在 </body> 前添加 Lazy Load 插件和调用即可.

<script src="jquery.lazyload.js"></script>
<script>
/* <![CDATA[ */
$("img.avatar").lazyload();
/* ]]> */
</script>

当然, 在这之前你还需确保你的网站已经载入 jQuery. 完整的说明可以参考我翻译的关于 Lazy Load 的文章.

使用 Lazy Load 的优缺点

为什么用要 Lazy Load? 可能使用之前你就知道, 可以延迟加载图片, 提升页面加载速度. 但其实紧紧是速度问题, 其对网站的 SEO 也很重要. 比如: 现在有某文章页面, 后面有 N 多人回复, 但这些回复者的头像与文章内容往往没有关系, 我们不希望搜索引擎收录这么多无关的图片.

换个角度, 如果我们做的是电子商务网站, 希望产品的 description 中有丰富的图文信息, 并且被搜索引擎爬取. 但这些图片往往尺寸大影响加载速度, 淘宝为了页面性能也已经全部延迟加载, 而那些对 SEO 依赖性强的平台来说这种做法未必是好事.

选择是否延迟加载图片, 要衡量内容的重要性和页面的性能, 在其中取得平衡很重要.

 

PHP 相关文章推荐
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
利用谷歌 Translate API制作自己的翻译脚本
Jun 04 PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP7数组的底层实现示例
Aug 25 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 #PHP
WordPress中对访客评论功能的一些优化方法
Nov 24 #PHP
php发送短信验证码完成注册功能
Nov 24 #PHP
PHP获取文件扩展名的4种方法
Nov 24 #PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 #PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 #PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 #PHP
You might like
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python中用Spark模块的使用教程
2015/04/13 Python
Python selenium文件上传方法汇总
2020/11/19 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python创建数字列表的示例
2019/11/28 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
详解python的变量缓存机制
2021/01/24 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
三年级语文教学反思
2014/02/01 职场文书
小学班级特色活动方案
2014/08/31 职场文书
公司2015年终工作总结
2015/05/26 职场文书
三八妇女节致辞
2015/07/31 职场文书
孙振耀退休感言
2015/08/01 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python