在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 相关文章推荐
安装APACHE
Jan 15 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
写出高质量的PHP程序
Feb 04 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
WordPress开发中短代码的实现及相关函数使用技巧
Jan 05 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php分享朋友圈的实现代码
Feb 18 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 PHP
PHP实现简单注册登录系统
Dec 28 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
Python批量转换文件编码格式
2015/05/17 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
深入理解Python中装饰器的用法
2016/06/28 Python
python实现画圆功能
2018/01/25 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python实现图像全景拼接
2020/03/27 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
给老婆大人的检讨书
2014/02/24 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
土建工程师岗位职责
2014/06/10 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
房屋出售授权委托书
2014/10/12 职场文书
2014年计生工作总结
2014/11/21 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
python实现学生信息管理系统(面向对象)
2022/06/05 Python