最新消息:本站所有跳转向bbs.ykit.cn的附件将全面停止,附件已转移到https://www.qingsj.com

缓存 Gravatar 头像到本地服务器

wordpress教程 有客 1200浏览 0评论

使用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 头像到本地服务器

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址