在普通的WordPress中没有任何东西会导致您所描述的内容。
你的问题似乎源于定制你的过程(通过插件或你自己的定制),用用户的电子邮件地址填充用户登录,以避免用户名和电子邮件。如果这是一个您自己制定的自定义流程,那么问题是由于没有在绕过核心WP流程的基础上考虑所有可能的问题。
在这样做时,问题是当用户更改其电子邮件地址时,您还必须考虑他们的用户名更改。电子邮件和用户名都必须是唯一的值(显示名称不需要唯一)。如果用户更改了他们的电子邮件,但user\\u登录值是他们以前的电子邮件,则在尝试注册以前的电子邮件时,唯一用户名验证将返回错误。
简单地用电子邮件地址填充用户名不是一个好主意。WP故意没有用于更改用户名的内置过程,因此您必须通过直接db更新绕过该过程。任何时候你想做点什么;解决方案;作为WP的核心部分,您需要问自己两个问题:
这是个好主意吗我真的需要这样做吗如果您必须完全取消用户名,更好的方法是想出一种从电子邮件地址创建用户名值的方法(比如提取第一部分),而不是让它成为实际的电子邮件。但是。。。然后,在验证过程中还需要一个额外的过程,以确保自动填充的伪用户名产生唯一的值(例如,如果“john”已经存在,请在其中添加“1”)。