无意中从朋友网站那里发现了一个QQ头像的接口
https://q2.qlogo.cn/headimg_dl?dst_uin=1355502473&spec=100
参数说明
uin: QQ号
spec: 图片大小,试了几个,只有100和640有效,推测用于默认和高清头像
然后就是对主题内的functions.php下手,添加以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| add_filter('get_avatar', 'qq_img', 10, 2); function qq_img($avatar,$id_or_email) { $email = ''; if (is_numeric($id_or_email)){ $id = (int)$id_or_email; $user = get_userdata($id); if ($user) $email = $user->user_email; }else if(is_object($id_or_email)){ if (!empty($id_or_email->user_id)){ $id = (int)$id_or_email->user_id; $user = get_userdata($id); if ($user) $email = $user->user_email; }else if(!empty($id_or_email->comment_author_email)){ $email = $id_or_email->comment_author_email; } }else{ $email = $id_or_email; } $hash = md5(strtolower(trim($email))); $url = 'https://avatar.zrahh.com/avatar/' . $hash; if(stripos($email,"@qq.com")) { $qq=str_ireplace("@qq.com","",$email); if(preg_match("/^\d+$/",$qq)) { $qqavatar="https://q2.qlogo.cn/headimg_dl?dst_uin=".$qq."&spec=100"; return '<img src="'.$qqavatar.'"class="avatar avatar-50 photo" width="50" height="50" alt="avatar" />'; }else{ return '<img src="'.$url.'"class="avatar avatar-50 photo" width="50" height="50" alt="avatar" />'; } }else{ return '<img src="'.$url.'"class="avatar avatar-50 photo" width="50" height="50" alt="avatar" />'; } }
|
现在使用QQ邮箱评论可以显示QQ头像了,但还有几个缺点:
1.会覆盖掉那些设置了Gravatar头像却使用QQ邮箱的用户。网上搜到了一篇利用返回http头判断用户是否设置了头像,但在国内会拖慢加载速度(国内源仍然不快),故没有借鉴,等有空看看有没有更好的方法。
2.自定义Gravatar默认头像失效,这个对我来说不是很重要,所以就不管了(坏笑)
3.未在其他主题测试过,兼容性未知