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

时间:2013-06-19 作者:Mateusz Hajdziony

如标题所示,如何通过编程更改用户的登录?

我想用wp_insert_user 函数,但在更新当前用户时,似乎不会更改其用户名。我应该使用$wpdb->update 为了这个?如果是,更改用户名的代码是什么样子的?如果WordPress API不允许更改用户名,那么更改用户登录会有什么后果?

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我确信wp_update_user() 应该这样做。

它甚至将user\\u login作为param获取,但当您设置此param时,它似乎会忽略它。

所以这段代码看起来不错,但它并没有像您希望的那样工作:(:

wp_update_user(
    [\'ID\' => $user_id, \'user_login\' => $new_login] 
);
您必须调用自定义SQL查询来更新user\\u登录:

global $wpdb;
$wpdb->update(
    $wpdb->users, 
    [\'user_login\' => $new_user_login], 
    [\'ID\' => $user_id]
);
它工作正常,我认为不会有任何严重后果,因为WP使用用户ID向用户分配帖子/评论(等等)。

我能想到的唯一问题是,当这个用户当前登录时,他将在user\\u登录更改后注销。

SO网友:Mohit Aneja

您也可以考虑通过SQL查询更改user\\u nicename。完成后,所有永久链接和其他功能都将完美运行。

结束

相关推荐

如何在不使用$wpdb->Prepare的情况下正确清理字符串?

我正在进行高级搜索(使用自定义sql查询),查询字符串是使用变量形成的。例如,如果此人选中一些选项,则只有这些条件才会添加到WHERE子句中。我不能使用$wpdb->prepare, 因为我希望能够向查询字符串中添加如下所示的变量:$var = \"AND pm.meta_value = \'%$_POST[\'val\']%\'\"; 我看着like_escape(), 但文件上说:清理$字符串,以便在SQL查询的类似表达式中使用。Will still need to be SQL e