wordpress功能集成(五):无插件实现头像缓存

/ 0评 / 0

我想尽量将所有wordpress过滤器的应用教程都放在一堆,wordpress的头像都是有第三方网站提供的,这样有有点也有缺点,缺点:有的地方打开gravatar比较慢,还有的人根本打不开这个网站,那样的话,头像都显示不了,所以我们将头像图片保存在网站服务器上,在访客留言中输出头像之前,先检查一下,服务器上是否已经保存了这个头像文件?如果保存了就不用链接到gravatar网站了。

首先我们需要知道wordpress是怎样获取头像的,我们获取评论列表使用的函数为:wp_list_comments(),该函数位于wp-includes/comment-template.php文件,这个函数中的代码知识一些判断代码真正数去评论的是类Walker_Comment,这个类的定义也在comment-template.php文件,这个类中输出头像就是使用的get_avatar()函数,get_avatar函数位于wp-includes/pluggable.php文件中,函数用法为:

查看这个函数的源码,看不全懂也没关系,我们只需要找图片代码,直接扫视,找到含所有<img字样的地方就好了。很容易找到是:

这里的图片src输出之后将是

上面的url中 avatar/到?s之间的字符是根据评论者邮箱计算的md5散列,不过前面两段的介绍无关紧要,知识介绍一个头像获取的方法,我们只需要关心最终的输出,get_avatar函数的最后面提供了一个过滤器get_avatar,我们需要通过这个过滤器来改变头像的url,改变为我们服务器上缓存的图片url。如下

 

既然它提供了最终的输出过滤器,那么我们只需要在输出之前修改这个url就好了。

首先请在网站根目录(或者其它你认为合适的文件夹下)新建一个文件夹avatar,用来存放头像文件。
修改代码如下代码:

get_avatar函数不知一个过滤器哦,还是那句话,尽情的查找,尽情的修改,尽情的折腾吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注