如何以编程方式更改用户名(user_login)?


15

如标题中所示,如何以编程方式更改用户的登录名?

我想使用wp_insert_user功能,但似乎在更新当前用户时,它不会更改其用户名。我应该用$wpdb->update那个吗?如果是,更改用户名的代码将如何?鉴于WordPress API不允许更改用户名,更改用户登录会有什么后果?

Answers:


21

我确定该wp_update_user函数应该执行此操作(http://codex.wordpress.org/Function_Reference/wp_update_user)。

甚至将user_login用作参数,但是当您设置此参数时,它似乎忽略了它。

因此,这段代码看起来不错,但是却不能如您所愿:::

wp_update_user( array ( 'ID' => $user_id, 'user_login' => $new_login ) ) ;

您必须调用自定义SQL查询来更新user_login:

$wpdb->update($wpdb->users, array('user_login' => $new_user_login), array('ID' => $user_id));

它可以正常工作,我认为它不会带来任何严重后果,因为WP使用用户ID向用户分配帖子/评论(等等)。

我唯一想到的问题是,当该用户当前登录时,将在user_login更改后注销。


1
并非如此,请查看此功能的注释(以及代码):请注意,我们无法通过此功能更改用户名,实际上,由于WordPress不允许用户名更改用户名,因此也无法从管理控制台更改用户名。被更新。
Mateusz Hajdziony

谢谢,效果很好!不过,不必担心已登录的用户,因为我只允许更改已注销用户的用户名(通过电子邮件激活帐户)。
Mateusz Hajdziony

@pogoking您可能要考虑的一件事是,如果启用了漂亮的永久链接,则在允许用户更改其用户名后,用户或作者的永久链接可能会断开,因此您可能需要采取措施对此进行补偿。
艾哈迈德M

1
我需要添加全局$ wpdb; 使其工作

4
旧帖子,但即时通讯我自己看,值得检查一下,没有其他用户在您的网站上注册了同一user_login,因为登录表单显然使用此值来查找帐户并匹配密码哈希
haxxxton

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.