共计 2945 个字符,预计需要花费 8 分钟才能阅读完成。
解决方式:
-
缓存本地化
-
cdn加速 — 推荐
1.本地缓存
function dr_get_avatar( $email = '[email protected]', $size = '32', $default = '', $alt = '') {
// Gravatar 头像源,可自行修改
$gravatar_sever = 'gravatar.wp-china-yes.net';
$gravatar_uri = 'https://'.$gravatar_sever;
// 设置$email 默认值为一个不存在的邮箱,防止空的$email 导致出错
$f = md5( strtolower( $email ) );
// 以下代码将头像缓存到 wp-content 目录下
if ( !is_dir( WP_CONTENT_DIR.'/avatar' ) ) {
mkdir(WP_CONTENT_DIR.'/avatar', 0755, true);
}
$a = WP_CONTENT_URL.'/avatar/'. $f.$size.'.png';
$e = WP_CONTENT_DIR.'/avatar/'. $f.$size.'.png';
$d = WP_CONTENT_DIR.'/avatar/'. $f.'-d.png';
if($default==''){
$default = 'https://cravatar.cn/avatar/gravatar.png';
}
$t = 2592000; // 缓存有效期 30 天, 这里单位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
if ( !is_file($d) || (time() - filemtime($d)) > $t ) {
// 验证是否有头像
$uri = $gravatar_uri.'/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 = $gravatar_uri.'/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('dr_get_avatar', $avatar, $email, $size, $default, $alt);
}
此方法来源:龙笑天下-
2.CDN加速
if ( ! function_exists( 'get_cravatar_url' ) ) {
/**
* 替换 Gravatar 头像为 Cravatar 头像
*
* Cravatar 是 Gravatar 在中国的完美替代方案,你可以在 https://cravatar.cn 更新你的头像
*/ function get_cravatar_url( $url ) {
$sources = array(
'www.gravatar.com',
'0.gravatar.com',
'1.gravatar.com',
'2.gravatar.com',
'secure.gravatar.com',
'cn.gravatar.com',
'gravatar.com',
);
return str_replace( $sources, 'cravatar.cn', $url );
}
add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 );
add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 );
add_filter( 'get_avatar_url', 'get_cravatar_url', 1 );
}
if ( ! function_exists( 'set_defaults_for_cravatar' ) ) {
/**
* 替换 WordPress 讨论设置中的默认头像
*/ function set_defaults_for_cravatar( $avatar_defaults ) {
$avatar_defaults['gravatar_default'] = 'Cravatar 标志';
return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'set_defaults_for_cravatar', 1 );
}
if ( ! function_exists( 'set_user_profile_picture_for_cravatar' ) ) {
/**
* 替换个人资料卡中的头像上传地址
*/ function set_user_profile_picture_for_cravatar() {
return '您可以在 Cravatar 修改您的资料图片';
}
add_filter( 'user_profile_picture_description', 'set_user_profile_picture_for_cravatar', 1 );
}
Gravatar 镜像地址整理
-
[推荐]七牛镜像源 https://dn-qiniu-avatar.qbox.me/avatar/
-
[推荐]WP-China-Yes 镜像源 https://gravatar.wp-china-yes.net/avatar/
-
[推荐]极客族 https://sdn.geekzu.org/avatar/
-
Gravatar官方 WWW 源 https://www.gravatar.com/avatar/
-
Gravatar官方 CN 源 https://cn.gravatar.com/avatar/
-
Gravatar官方 EN 源 https://en.gravatar.com/avatar/
-
Gravatar官方 secure 源 https://secure.gravatar.com/avatar/
如果担心镜像源出问题,也可以利用nginx反代https://www.gravatar.com
正文完