在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 相关文章推荐
php header()函数使用说明
Jul 10 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
php实现的Timer页面运行时间监测类
Sep 24 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
简单谈谈favicon
Jun 10 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
PHP实现两种排课方式
Jun 26 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
详细解读Python中解析XML数据的方法
2015/10/15 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
英文求职信范文
2014/05/23 职场文书
人民调解员培训方案
2014/06/05 职场文书
护理专科学生自荐书
2014/07/05 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
大学同学聚会感言
2015/07/30 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
优化Mysql查询的示例
2022/04/26 MySQL
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript