WordPress判断Email是否有Gravatar头像
日期:
标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务: 点此联系我
文章目录
在WordPress中,评论者的头像大都是使用Gravatar的头像服务,评论者的头像是通过Email地址来调用的,有些用户没有Gravatar头像,那么Gravatar会显示默认头像。
在某些情况下,这并不是你想要的,相反,你可能想知道,你得到的是一个真正的Gravatar或者它只是默认的。如:
- 在用户没有gravatar头像的情况下,你想直接显示本地的默认头像
- 提醒没有头像的用户添加一个Gravatar头像,而不去打扰已经有头像的用户
我们可以通过以下代码来验证某个Email地址是否有Gravatar头像:
$email = 'abc@example.com'; // 要验证的Email地址
$hash = md5(strtolower(trim($email)));
$uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
echo '没有头像';
} else {
echo '有头像';
}
参考文章
Checking for the Existence of a Gravatar
-- 完 --
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-checking-for-the-existence-of-a_gravatar.html
哎..博主,抢个沙发..前两天我用了你投稿那篇文章的代码,并同时把投稿者注册成阅读者..投稿功能是成功了,但在测试了几次,但有一次出了个问题,就是我投稿成功后,我管理员的账号也变成了阅读者了,没进入到管理的界面..后来我把数据库还原了,问题有没了..请我是什么原因呢?希望得到露兜兄的解答…
@web-langlang 如果你照这里的教程操作:
https://www.ludou.org/wordpress-add-contribute-page.html/comment-page-2#comment-3817
一般不会出现这样的情况,除非你的管理员用户id是 0
哈。我正在写即时预览Gravatar头像的方法。
补充了个问题,我是把验证投稿者邮箱删了..就是这一句… if(mb_strlen($name,"utf-8") != strlen($name) || email_exists($email))改成 if(mb_strlen($name,"utf-8") != strlen($name))这样,会不会是这个原因呢?因为我想同一个邮箱可以投稿多次,不然一个邮箱只能投稿一次了
@web-langlang 那这就是问题的原因了,WordPress规定一个Email只能对应一个用户。
删掉这段验证,就破坏了WordPress的规则。
方法不错,可以在自己博客试试。
这个功能不错啊,通用性很好
挺实用的一个技巧。不过WP没有自带这个功能吗。。
@SoleilNeon 没有提供相关的函数。
在你站点,真的学到N多关于wordpress的技术
这个对速度严重有影响,去掉后飞快。。。
@不亦乐乎 有同感!!
也可以直接用插件:http://wordpress.org/plugins/validate-gravatar/
@超級efly https://www.ludou.org/too-many-plugins-and-themes-slow-down-wordpress.html
测试一下我的头像