WordPress随机显示本地头像,禁止gravatar头像并且替换为本地链接

无需插件,只用几行代码就完美解决了这个问题,也省去了各种烦恼。主要功能为:如果用户上传了头像则显示为已经上传头像,没有上传头像则显示为本地随机头像,具体效果可以参考本站。

gravatar头像虽然为全球通用头像,但不符合众多国人的常规审美,看着一堆丑丑的头像龟速加载出来,实在让人心塞。遇到网速不好或者其他原因时,网站“破图”也让站长十分困扰。为此各位大佬奉献了不同的解决方法,归纳如下:

  1. 使用SSL头像链接:https://secure.gravatar.com/avatar/,但终归还是gravatar头像,服务器在国外,不能彻底解决。
  2. 把gravatar头像缓存到本地服务器,此方法可以解决gravatar头像的加载缓慢问题,但解决不了头像丑陋的问题。
  3. 使用反代原理,重置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种方案里面最优选择,但依然解决不了奇奇怪怪的头像。
  4. 使用插件,目前有好多插件可以解决头像丑陋和加载速度问题,但缺点也相对明显,插件和主题直接的兼容性不尽如人意。

基于上面的各种尝试后,我们无需插件,只用几行代码就完美解决了这个问题,也省去了gravatar头像的各种烦恼。主要功能为:如果用户上传了头像则显示为已经上传头像,没有上传头像则替换为本地随机头像,具体效果可以参考本站。

第一步:准备用户头像

用户头像不易太大,尺寸为100px*100px即可,头像的大小只有2kb左右,不影响网站的加载速度。头像用数字命名,分别为1.jpg;2.jpg;3.jpg……,所有头像放入文件夹avatar中,把文件夹上传到主题目录中,主题路径为:域名/wp-content/themes/主题名称。本文为您准备了70个头像,可以直接下载使用。

第二步:添加代码

在主题的function.php文件的末尾加入下面的代码,代码中需要修改两处:

  1. 把代码中的“yunqikan”改为您的域名即可。
  2. 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,"yunqikan.cn") == 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.yunqikan.cn/6269.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

问答社区 在线客服
联系我们

QQ 技术:109033286

QQ 运维:3423710838

email 邮箱:drhxxkj@163.com

Qqun QQ交流群:808026766

分享本页
返回顶部
您的专业上云顾问

攻略6:

若您不是新用户,强烈建议注册新账号再购买,不论什么云都很青睐新用户,价格可以低至1折,找代理还可优惠15%至25%。

立即去云小店购买
您的专业上云顾问

攻略5:

各品牌云服务器的续费成本大约是新购成本的3倍,建议一次性购买3年,可以节约续费成本70%,莫图一时爽续费喊爹娘。

立即去云小店购买
您的专业上云顾问

攻略4:

不论选择那个厂商的云,评估业务量后尽量选择高配,避免服务器不够用时的升级费用,可节约升级费用至少40%到80%。

立即去云小店购买
您的专业上云顾问

攻略3:

阿里云1年在代理商购买,多年在云小站购买;腾讯云、华为云全部在代理商处购买至少再官方折扣基础再优惠15%到25%。

立即去云小店购买
您的专业上云顾问

攻略2:

领取代金券。每次活动都有500到2000元代金券可以领取,本站轮播长期可以领取阿里云、腾讯云无门槛代金券,可供上云使用。

戳本站上方大图领取
您的专业上云顾问

攻略1:

找代理商注册账号可优惠10%至20%,好多伙伴第一次上云,没有条件找到代理商,买完后才发现多花了1000多元,后悔莫及!

代理商合作联系站长