说起WordPress网站速度优化,一直以来都有一个小小的问题,那就是Gravatar头像,这个东西加载时快时慢,某一时候加载不正常延迟非常高,十分拖累网站加载速度,而网上很多之前的加速接口好像也都已失效。今天来讲下gravatar头像缓存本地的方法,下次加载直接使用本地链接。放在自己这里稳定高效。
一,创建缓存目录
在你的WordPress根目录创建一个avatar
的文件夹,权限调整为755
并不是所有人都设置了Gravatar头像,我们给那些没有头像的设置一个默认图片,没有头像就显示这个图片。
在avatar文件夹
放入一张名称为default.jpg
的图片,默认没有头像即使用这个图片。
三,将下边的代码放到 functions.php
把下边的代码放到你主题的functions.php
内,默认14天刷新一下本地头像缓存,可根据自己的需要自定义time。
//Gravatar 头像本地化加速 function my_avatar($avatar) { $tmp = strpos($avatar, 'http'); $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp); $tmp = strpos($g, 'avatar/') + 7; $f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp); $w = get_bloginfo('wpurl'); $e = ABSPATH .'avatar/'. $f .'.jpg'; $t = 1209600; //14天刷新一次缓存, 单位:秒 if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新 copy(htmlspecialchars_decode($g), $e); } else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg')); if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e); return $avatar; } add_filter('get_avatar', 'my_avatar');
OK刷新缓存看看。
需要注意的是有些主题可能不是在functions.php里,比如我的主题就是在coingfunctions.php里这个需要你们自己注意一下。
还有一种方法:
随机显示本地评论头像的代码,预先准备一些漂亮的图片代替WordPress自带的头像。 将下面代码复制粘贴到当前主题functions.php文件中:
////随机调取头像 add_filter( 'get_avatar' , 'local_random_avatar' , 1 , 5 ); function local_random_avatar( $avatar, $id_or_email, $size, $default, $alt) { if ( ! empty( $id_or_email->user_id ) ) { $avatar = ''.get_template_directory_uri().'/avatar/admin.jpg'; }else{ $random = mt_rand(1, 10); $avatar = ''.get_template_directory_uri().'/avatar/'. $random .'.jpg'; } $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"; return $avatar; }
在当前主题目录中新建一个名称为avatar的文件夹,里面放10张名称连续的jpg图片,比如1.jpg、2.jpg、3.jpg………,和一张用于管理员的图片,名称为admin.jpg。 添加上述代码后,只有管理员是显示固定的图片,其他留言者都是随机显示预先准备的头像图片,包括注册用户。
到这里gravatar头像设置教程就完了!
发表评论