gravatar头像虽然为全球通用头像,但不符合众多国人的常规审美,看着一堆丑丑的头像龟速加载出来,实在让人心塞。遇到网速不好或者其他原因时,网站“破图”也让站长十分困扰。为此各位大佬奉献了不同的解决方法,归纳如下:
- 使用SSL头像链接:https://secure.gravatar.com/avatar/,但终归还是gravatar头像,服务器在国外,不能彻底解决。
- 把gravatar头像缓存到本地服务器,此方法可以解决gravatar头像的加载缓慢问题,但解决不了头像丑陋的问题。
- 使用反代原理,重置gravatar的头像源,常用的头像源CDN地址有:https://secure.gravatar.com/avatar ; https://cn.gravatar.com/avatar ; https://gravatar.wp-china-yes.net/avatar ; https://fdn.geekzu.org/avatar ;加载速度是3种方案里面最优选择,但依然解决不了奇奇怪怪的头像。
- 使用插件,目前有好多插件可以解决头像丑陋和加载速度问题,但缺点也相对明显,插件和主题直接的兼容性不尽如人意。
基于上面的各种尝试后,我们无需插件,只用几行代码就完美解决了这个问题,也省去了gravatar头像的各种烦恼。主要功能为:如果用户上传了头像则显示为已经上传头像,没有上传头像则替换为本地随机头像,具体效果可以参考本站。
第一步:准备用户头像
用户头像不易太大,尺寸为100px*100px即可,头像的大小只有2kb左右,不影响网站的加载速度。头像用数字命名,分别为1.jpg;2.jpg;3.jpg……,所有头像放入文件夹avatar中,把文件夹上传到主题目录中,主题路径为:域名/wp-content/themes/主题名称。本文为您准备了70个头像,可以直接下载使用。
第二步:添加代码
在主题的function.php文件的末尾加入下面的代码,代码中需要修改两处:
- 把代码中的“yunqikan”改为您的域名即可。
- mt_rand(1, 10)中数字为随机图片张数可以自行修改。
注意:如果您不想修改代码,那么可以用文末所附的升级版源码,但会稍微拖慢网站的加载速度。
//自定义随机调用本地头像
add_filter( 'get_avatar' , 'local_random_avatar' , 1 , 5 );
function local_random_avatar( $avatar, $id_or_email, $size, $default, $alt) {
if ( is_numeric($id_or_email)){
$user_id = (int) $id_or_email;
} elseif ( is_string( $id_or_email ) && ( $user = get_user_by( 'email', $id_or_email ))){
$user_id = $user->ID;
} elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id )){
$user_id = (int) $id_or_email->user_id;
}
$url = ''. get_avatar_url($user_id);
if (strpos($url,"www.juyun.top") == true){
$avatar_url_local=1;
}
if ( !empty($user_id) && $avatar_url_local == 1){
$avatar = ''. get_avatar_url($user_id);
}
else {
$random = mt_rand(1, 50);
$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;
}
为了方便懒人,这里附上【升级版】代码,供大家参考指正。
//自定义随机调用本地头像
add_filter( 'get_avatar' , 'local_random_avatar' , 1 , 5 );
function local_random_avatar( $avatar, $id_or_email, $size, $default, $alt) {
if ( is_numeric($id_or_email)){
$user_id = (int) $id_or_email;
} elseif ( is_string( $id_or_email ) && ( $user = get_user_by( 'email', $id_or_email ))){
$user_id = $user->ID;
} elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id )){
$user_id = (int) $id_or_email->user_id;
}
$url = home_url();
$url_s = strtolower($url); //转成小写
$hosts = parse_url($url_s);
$host = $hosts['host'];
//查看是几级域名
$data = explode('.', $host);
$n = count($data);
//判断是否是双后缀
$preg = '/[\w].+\.(com|net|org|gov|edu)\.cn$/';
if(($n > 2) && preg_match($preg,$host)){
//双后缀取后3位
$host = $data[$n-3].'.'.$data[$n-2].'.'.$data[$n-1];
}else{
//非双后缀取后两位
$host = $data[$n-2].'.'.$data[$n-1];
}
$url = ''. get_avatar_url($user_id);
if (strpos($url,$host) == true){
$avatar_url_local=1;
}
if ( !empty($user_id) && $avatar_url_local == 1){
$avatar = ''. get_avatar_url($user_id);
}
else {
$random = mt_rand(1, 51);
$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;
}
本站所有内容,如有版权、侵权等问题,请及时联系本站做删除。发布者:聚云网,转载请注明出处:https://www.juyun.top/6269.html