在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中的数组操作函数整理
Aug 18 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
dedecms集成财付通支付接口
Dec 28 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 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下实现折线图效果的代码
2007/04/28 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
js实现双色球效果
2020/08/02 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python 中如何获取列表的索引
2019/07/02 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
股东协议书
2014/04/14 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
2014年文员工作总结
2014/11/18 职场文书
初中政治教学工作总结
2015/08/13 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书