WordPress判断Email是否有Gravatar头像

日期: 标签:WordPress教程 14 条留言
如需帮忙改代码,或者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
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者,主业是淘宝店主,卖些工艺品,感兴趣可以到我的淘宝店看看(旺旺不提供技术咨询):西西弗sisyphe

14 条留言

点此留言
  1. web-langlang

    哎..博主,抢个沙发..前两天我用了你投稿那篇文章的代码,并同时把投稿者注册成阅读者..投稿功能是成功了,但在测试了几次,但有一次出了个问题,就是我投稿成功后,我管理员的账号也变成了阅读者了,没进入到管理的界面..后来我把数据库还原了,问题有没了..请我是什么原因呢?希望得到露兜兄的解答…

    • Ludou

      @web-langlang 如果你照这里的教程操作:
      https://www.ludou.org/wordpress-add-contribute-page.html/comment-page-2#comment-3817

      一般不会出现这样的情况,除非你的管理员用户id是 0

  2. Mouse

    哈。我正在写即时预览Gravatar头像的方法。

  3. web-langlang

    补充了个问题,我是把验证投稿者邮箱删了..就是这一句… if(mb_strlen($name,"utf-8") != strlen($name) || email_exists($email))改成 if(mb_strlen($name,"utf-8") != strlen($name))这样,会不会是这个原因呢?因为我想同一个邮箱可以投稿多次,不然一个邮箱只能投稿一次了

    • Ludou

      @web-langlang 那这就是问题的原因了,WordPress规定一个Email只能对应一个用户。
      删掉这段验证,就破坏了WordPress的规则。

  4. 乌帮图

    方法不错,可以在自己博客试试。

  5. 奇迹sf

    这个功能不错啊,通用性很好

  6. SoleilNeon

    挺实用的一个技巧。不过WP没有自带这个功能吗。。

  7. Firm

    在你站点,真的学到N多关于wordpress的技术

  8. 不亦乐乎

    这个对速度严重有影响,去掉后飞快。。。

  9. 超級efly

    也可以直接用插件:http://wordpress.org/plugins/validate-gravatar/

    • Ludou

      @超級efly https://www.ludou.org/too-many-plugins-and-themes-slow-down-wordpress.html

发表留言