WordPress自定义gravatar头像,缓存Gravatar头像为网站提速

  • A+
所属分类:未分类
摘要

wordpress头像经过自定义后,访问更流畅,必须放弃默认的gravatar头像,打开网站头像转圈的时代已经过去了。

wordpress评论是一个网站的灵魂,直接决定着网站的收录和权重,然而wordpress头像默认的是gravatar头像,访问网站时,读取速度非常慢,gravatar头像的服务器是国外的,这不光自己的头像慢,其它评论者的头像下载速度也慢,所以抛弃使用gravatar源地址吧。

关于WordPress头像的设置,想必大多数的博客站长会非常注重,无论是博主的头像,还是评论者的头像,直接影响着网站的精神面貌。

gravatar的评论头像在文章底部的评论栏里出现或者在侧边栏出现,一般来说,评论头像越多,网站人气越足。国内有不少的wordpress博客主文章粘度很高,每一篇文章都超过了100个评论,生成100多个不同的评论头像,从某种意义评论头像列表上还能美化网站。

种种原因,使用wordpress默认的gravatar头像,影响网站访问体验,所以要修改成本地的自定义头像,如此访问速度才会快速。当然你也可以不显示头像,只显示评论名称,有不少博主取消了gravatar头像,是否显示头像,自己决定,反正我感觉显示头像,评论栏更好看。

博主添加自定义头像

编辑主题functions.php文件,把下边代码复制到第二行,也就是<?php下边。把主题图片文件夹logo所在的位置/images/logo-trans.png改成改成自己的路径,直接复制logo地址,粘贴修改下就行了,默认头像直接写自己博客名称就行,再访问博客头像,就变成本地地址的了。

add_filter( 'avatar_defaults', 'newgravatar' );
function newgravatar ($avatar_defaults) {
$myavatar = get_bloginfo('template_directory') . '/images/wpdaxue-gravatar.jpg';
$avatar_defaults[$myavatar] = "对民网";
return $avatar_defaults;
}

博客注册会员添加自定义头像

如果博客开放了注册会员功能,可以使用Simple Local Avatars和 WP User Avatar,为注册用户提供上传自定义头像功能。插件启用后,你就可以在后台 >用户>我的个人资料 下看到自定义头像上传功能了

Simple Local Avatars上传方法:

WP User Avatar上传方法:

缓存gravatar头像为网站提速

评论者有没有设置自定义Gravatar头像时,访问网站读取Gravatar网站的图片,非常的慢,一直在那转圈,影响访问体验,有两种方式缓存Gravatar头像的方式,一种是缓存Gravatar头像到本地,一种是缓存Gravatar到七牛云存储上。

第一种方式:缓存Gravatar头像到本地

在主机根录创建一个权限755的avatar文件夹,必须有这个755的写入权限,要不然缓存不上图像,上传一个default.jpg的默认头像到该文件夹里。复制下边代码到<?php下边,评论者的头像就逐渐的缓存到avatar文件夹了。

function my_avatar( $email, $size = '32', $default = '', $alt = '') {
$f = md5( strtolower( $email ) );
// 以下代码将头像缓存到wp-content目录下
$a = get_bloginfo('template_url') . '/avatar/'. $f . $size . '.png';
$e = get_template_directory() . '/avatar/' . $f . $size . '.png';
$d = get_template_directory() . '/avatar/' . $f . '-d.png';
// 如果要将头像缓存到当前主题目录下,请将3-5行代码改成:
// $a = get_bloginfo('template_url') . '/avatar/'. $f . $size . '.png';
// $e = get_template_directory() . '/avatar/' . $f . $size . '.png';
// $d = get_template_directory() . '/avatar/' . $f . '-d.png';

if($default=='')
$default = get_bloginfo('wpurl').'avatar/default.jpg';

$t = 2592000; // 缓存有效期30天, 这里单位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
if ( !is_file($d) || (time() - filemtime($d)) > $t ) {
// 验证是否有头像
$uri = 'http://www.gravatar.com/avatar/' . $f . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
// 没有头像,则新建一个空白文件作为标记
$handle = fopen($d, 'w');
fclose($handle);
$a = $default;
}
else {
// 有头像且不存在则更新
$r = get_option('avatar_rating');
$g = 'http://www.gravatar.com/avatar/'. $f. '?s='. $size. '&r=' . $r;
copy($g, $e);
}
}
else {
$a = $default;
}
}

$avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);
}

第二种方式:缓存Gravatar头像到七牛云存储

七牛云存储的CDN加速,就是缓存静态文件,自然也就可以缓存Gravatar图片了,其它的站内的图片、css等静态文件也可以缓存。请查看链接:http://duimin.com/75.html

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: