更改用户电子邮件的正确方式是什么?

时间:2021-02-10 作者:William Entriken

当用户更新其电子邮件地址时,我们会看到他们的旧电子邮件地址无法注册。这是不可取的。

这似乎是基于user_loginuser_nicename 未更新为user_email.

为解决此问题,我们计划:

$wpdb->update($wpdb->users, array(\'user_login\' => $new_user_login, \'user_nicename\' => $user_nicename), array(\'ID\' => $user_id));
这一定是其他人看到的常见问题。所以我只是想问,这是解决这个问题的正确方法吗?

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

在普通的WordPress中没有任何东西会导致您所描述的内容。

你的问题似乎源于定制你的过程(通过插件或你自己的定制),用用户的电子邮件地址填充用户登录,以避免用户名和电子邮件。如果这是一个您自己制定的自定义流程,那么问题是由于没有在绕过核心WP流程的基础上考虑所有可能的问题。

在这样做时,问题是当用户更改其电子邮件地址时,您还必须考虑他们的用户名更改。电子邮件和用户名都必须是唯一的值(显示名称不需要唯一)。如果用户更改了他们的电子邮件,但user\\u登录值是他们以前的电子邮件,则在尝试注册以前的电子邮件时,唯一用户名验证将返回错误。

简单地用电子邮件地址填充用户名不是一个好主意。WP故意没有用于更改用户名的内置过程,因此您必须通过直接db更新绕过该过程。任何时候你想做点什么;解决方案;作为WP的核心部分,您需要问自己两个问题:

这是个好主意吗如果您必须完全取消用户名,更好的方法是想出一种从电子邮件地址创建用户名值的方法(比如提取第一部分),而不是让它成为实际的电子邮件。但是。。。然后,在验证过程中还需要一个额外的过程,以确保自动填充的伪用户名产生唯一的值(例如,如果“john”已经存在,请在其中添加“1”)。

相关推荐

Adding column to wpex_users

因此,我尝试向wpex\\u用户添加一列。由于某种原因,我不能。这是我的问题:ALTER TABLE wpex_users ADD nametest VARCHAR(200);这给了我一个错误,我的标准值是错误的。它为空。我不知道该怎么办。我真的需要这个新专栏。您知道我需要添加新列的查询吗?我用PHPMyAdmin编写查询。