使用wordpress博客做站的朋友都知道wp默认调用的是Gravatar的头像,现在有客教你,怎样让wordpress调用Gravatar缓存到本地的头像!
网站默认情况下显示的 Gravatar 头像都是直接调用其服务器上面的资源,缓存 Gravatar 头像到本地服务器最大的好处就是提升加载速度,把头像缓存到本地后,打开网页后不需要再到 gravatar 网站上去查询评论者的头像,因为我们已经把头像全部缓存到本地服务器了,速度当然快。
实现很简单:
一、将如下函数丢给主题functions.php:
/* Mini Gavatar Cache by Willin Kan. Modify by zwwooooo */ function my_avatar( $email, $size = '50', $default = '', $alt = '' ) { // $alt = (false === $alt) ? '' : esc_attr( $alt ); $alt = ('' == $alt) ? '' : $alt ; $f = md5( strtolower( $email ) ); $w = home_url(); //$w = get_bloginfo('url'); $a = $w. '/avatar/'. $f . '.jpg'; $e = preg_replace('/wordpress\//', '', ABSPATH) . 'avatar/' . $f . '.jpg'; $t = 604800; //设定7天, 单位:秒 if ( empty($default) ) $default = $w. '/avatar/avatar.jpg'; if ( !is_file($e) || (time() - filemtime($e)) > $t ){ //当头像不存在或者文件超过7天才更新 $r = get_option('avatar_rating'); $g = sprintf( "http://www.gravatar.com", ( hexdec( $f{0} ) % 2 ) ). '/avatar/'. $f. '?s='. $size. '&d='. $default. '&r='. $r; copy($g, $e); } if (filesize($e) < 500) copy($default, $e); $avatar = "<img class="avatar avatar-{$size} photo" title="{$alt}" alt="{$alt}" src="{$a}" width="{$size}" height="{$size}" />"; return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt); }
注意:调用此函数时需要给参数 $alt 赋值,不然 alt 同样不起作用,$alt 一般赋值为评论作者名。
例如:<!--?php echo get_avatar($comment, $size='40', $default='' ); ?--> 改为:<!--?php echo my_avatar($comment->comment_author_email, $size='40', $default='', $alt=$comment->comment_author ); ?>
二、在你网站的根目录,也就是与 wp-content 文件夹同级的目录下新建立一个 avatar 文件夹,更改权限为0755(在FTP软件中,右键点击文件夹,选择“属性”或者“CHMOD”即可打开属性窗口,在里面更改权限即可)。这个文件夹就是将来存放 Gravatar 头像的地方。
三、准备一张默认的头像图片,命名为:avatar.jpg,将其上传到 avatar 文件夹下面。这张图片的作用就是如果用户没有定义过头像,就调用这张默认的头像。
转载请注明:有客帮 » 缓存 Gravatar 头像到本地服务器