修正wp禁用admin后评论头像变为默认

发表评论 阅读评论

WordPress 3.7中更新了密码强度指示条,可见在WordPress开始重视安全问题了,看看我的密码强度竟然是弱,立刻换成更强的。然后将所有的订阅者账号删掉,新建一个管理者账号,用新建的账号登陆,将admin账号删除并将所有博文都转移到新账号下。此时以为都完成了,其实不然。

发现问题

当我把这些都做完后发现自己的评论头像(Avatar)都变成默认的头像了。

  1. 首先检查我的email地址,发现没有问题。
  2. 记得之前有修改过Comments Avatar Lazyload,回退到稳定版本,问题依然没有解决。
  3. 查看评论代码及get_avatar函数的实现。

终于发现问题的原因了。先看get_avatar通过第一个参数$id_or_email获取具体email的逻辑,该参数接受$user_id,$email或者$comment对象。

  1. 如果是number,那么就是$user_id,获取user对象,再获取user_email.
  2. 如果是object,那么就是$comment.
    1. 如果存在$comment->user_id, 那么使用该user的user_email.
    2. 如果存在$comennt->comment_author_email,那么使用该eamil.
  3. 那么就是string,自然使用该字符串作为email.

评论头像显示不正常就是因为给get_avatar传入了comment对象,并且$comment->user_id为已删除的user_id,找不到这个user,就使用了默认头像。

现在已经将这个bug提交到了wordpress,不知道时候才能修复这个问题。

修复问题

等待wordpress修复这个bug不知道要到什么时候了,自己先修复吧,这里不修改WordPress的源代码,修改下数据库就可以解决了。修改comments表中user_id从1变成0.

UPDATE wp_comments SET user_id=0 WHERE user_id=1;
标签: , , ,

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
回到顶部