在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合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
几款免费开源的不用数据库的php的cms
Dec 19 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
PHP中strval()函数实例用法
Jun 07 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
浅析php原型模式
2014/11/25 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
vue实现记事本功能
2019/06/26 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
python模块之re正则表达式详解
2017/02/03 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
django修改models重建数据库的操作
2020/03/31 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
办理信用卡工作证明
2014/01/11 职场文书
婚纱店策划方案
2014/05/22 职场文书
家庭贫困证明
2014/09/23 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
关于观后感的作文
2015/06/18 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
简单介绍Python的第三方库yaml
2021/06/18 Python
python计算列表元素与乘积详情
2022/08/05 Python