Як програмно змінити ім’я користувача (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 як парам, але, схоже, він ігнорує його, коли ви встановлюєте цей парам.

Отже, цей код виглядає нормально, але він не працює так, як ви цього хотіли :(:

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 використовує ідентифікатор користувачів, щоб призначати користувачам повідомлення / коментарі (тощо).

Єдина проблема, про яку я можу подумати - це те, що коли цей користувач зараз увійшов у систему, він вийде після зміни користувача_login.


1
Не справді, перевірте примітки до цієї функції (як і код): Зверніть увагу, що ми не можемо змінити імена користувачів за допомогою цієї функції, адже імена користувачів не можна змінювати з панелі адміністратора, оскільки WordPress не дозволяє імена користувачів бути оновленим.
Матеуш Хадджоній

Дякую, це чудово працює! Не хвилюйтесь щодо входу в систему користувачів, оскільки я дозволяю змінювати лише ім’я користувача для вихідних (активація облікового запису електронною поштою).
Матеуш Хадджоній

@pogoking Одне, що ви можете розглянути, - це те, що постійні посилання користувачів або автора можуть бути порушені після того, як вони дозволять користувачам змінювати свої імена користувачів, якщо ввімкнено досить постійні посилання, тож вам може знадобитися вжити заходів для компенсації цього.
Ахмад М

1
мені потрібно було додати глобальний $ wpdb; щоб змусити його працювати
Mau

4
Стара публікація, але я дивлюся на те, що я роблю це сам, варто перевірити, чи немає іншого користувача з тим самим user_login, зареєстрованого на вашому сайті, як форма входу, очевидно, використовує це значення для пошуку облікових записів та відповідності хешей паролів
haxxxton

4

Ви також можете змінити ім'я_користувача через SQL-запит. Після цього всі постійні посилання та інші функції працюватимуть ідеально.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.