Gravatar头像缓存功能简单代码版

转自点点 13 年前 回复

, , , ,

打开functions.php,将下面的代码copy到里面去:

//评论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');

注意在WordPress根目录建立avatar文件夹,并上传default.jpg默认图片,大小是你网站的头像大小;或者建立avatar文件夹之后,刷新评论,会在avatar文件夹默认一张没有名字的图片,将其改成defaul.jpg,也行,关键就是这个大小,不然网站默认显示16*16大小的。
如果有主题加了这样的代码,比如Tstyle主题就是这样:

$grav_url="http://www.gravatar.com/avatar/".md5( strtolower( $email ) )."&d=http://www.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s=32";

首先将其改成这样:

$grav_url=gravatar_cache($email);

然后把下面代码摔进functions.php文件:

//侧边栏Gravatar头像缓存
function gravatar_cache($email){
	$f = md5( strtolower( $email ) );
	$w = get_bloginfo('wpurl');
	$a = $w.'/avatar/'.$f.'.jpg';
	$e = ABSPATH.'avatar/'.$f.'.jpg';
	$t = 1209600; //超时时间设定,默认14天,单位:秒
	if ( empty($default) ) $default = $w.'/avatar/default.jpg';
	if ( !is_file($e) || (time() - filemtime($e)) > $t ){ //当头像不存在或者缓存时间已经超过14天
		$r = get_option('avatar_rating');
		$g = sprintf( "http://%d.gravatar.com", ( hexdec( $f{0} ) % 2 ) ). '/avatar/'.$f.'?s='.$size.'&d='.$default.'&r='.$r;
		copy($g, $e);
	}
	if (filesize($e) < 500) copy($default, $e);
	return $a;
}

其他的同理!
本文转自:http://onlyisu.in/wordpress-tstyle-gravatar-cache.html

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)