ユーザー名(user_login)をプログラムで変更する方法は?


15

タイトルのように、プログラムでユーザーのログインを変更する方法は?

wp_insert_user関数を使用したかったのですが、現在のユーザーを更新してもユーザー名は変更されないようです。$wpdb->updateそのために使うべきですか?はいの場合、ユーザー名を変更するためのコードはどのようになりますか?WordPress APIでユーザー名の変更が許可されていない場合、ユーザーのログインを変更するとどのような影響がありますか?

回答:


21

私は、wp_update_user関数がこれを行うべきだと確信していました(http://codex.wordpress.org/Function_Reference/wp_update_user)。

user_loginをparamとして取得しますが、このparamを設定すると、無視されるようです。

したがって、このコードは問題ないように見えますが、期待どおりに動作しません:(:

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

user_loginを更新するには、カスタムSQLクエリを呼び出す必要があります。

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

WPはユーザーIDを使用して投稿/コメント(など)をユーザーに割り当てるため、正常に機能し、重大な結果はないと思います。

私が考えることができる唯一の問題は、このユーザーが現在ログインしているとき、user_loginの変更後にログアウトされることです。


1
実際には、この関数(およびコード)の注意事項を確認してください:この関数を使用してユーザー名を変更することはできません。実際、WordPressではユーザー名を許可しないため、管理者ダッシュボードからもユーザー名を変更できません更新します。
マテウシュハイジジオニー

ありがとう、それはうまくいく!ただし、ログインしているユーザーのユーザー名の変更(電子メールによるアカウントのアクティブ化)のみを許可しているため、ログインしているユーザーの心配はありません。
マテウスハイジジオニー

@pogokingパーマリンクが有効になっている場合、ユーザーがユーザー名を変更できるようにすると、ユーザーまたは作成者のパーマリンクが破損する可能性があることを考慮する必要があるため、それを補うための対策が必要になる場合があります。
アフマドM

1
グローバルな$ wpdbを追加する必要がありました。それを動作させるために
Mauの

4
ログインフォームが明らかアカウントと一致するパスワードハッシュを見つけるために、この値を使用して自分自身をこれをやって見て古いポストが、イムは、それはあなたのサイトに登録同じUSER_LOGINを持つ別のユーザーがイマイチ価値がチェックだろう
haxxxton

4

SQLクエリを介してuser_nicenameを変更することも検討できます。これが完了すると、すべてのパーマリンクと他の機能は完璧に動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.