Jak programowo zmienić nazwę użytkownika (login_użytkownika)?


15

Jak w tytule, jak programowo zmienić login użytkownika?

Chciałem użyć wp_insert_userfunkcji, ale wygląda na to, że podczas aktualizacji bieżącego użytkownika nie zmienia to jego nazwy użytkownika. Czy powinienem to wykorzystać $wpdb->update? Jeśli tak, jak wyglądałby kod do zmiany nazwy użytkownika? Jakie konsekwencje miałaby zmiana loginu użytkownika, biorąc pod uwagę, że interfejs API WordPress nie pozwala na zmianę nazw użytkowników?

Odpowiedzi:


21

Byłem pewien, że wp_update_userfunkcja powinna to zrobić ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Nawet parametr user_login jest traktowany jako parametr, ale wygląda na to, że ignoruje go po ustawieniu tego parametru.

Więc ten kod wygląda OK, ale nie działa tak, jak byś tego chciał :(:

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

Musisz wywołać niestandardowe zapytanie SQL, aby zaktualizować login_użytkownika:

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

Działa OK i nie sądzę, że ma to poważne konsekwencje, ponieważ WP używa ID użytkownika do przypisywania postów / komentarzy (i tak dalej) do użytkownika.

Jedynym problemem, jaki mogę wymyślić, jest to, że kiedy ten użytkownik jest aktualnie zalogowany, zostanie wylogowany po zmianie user_login.


1
Nie bardzo, sprawdź uwagi dotyczące tej funkcji (a także kodu): Pamiętaj, że nie możemy zmienić nazw użytkowników za pomocą tej funkcji, w rzeczywistości nazw użytkowników nie można również zmienić z pulpitu administratora, ponieważ WordPress nie pozwala na nazwy użytkowników do być na bieżąco.
Mateusz Hajdziony

Dzięki, działa świetnie! Nie martw się o zalogowanych użytkowników, ponieważ zezwalam na zmianę nazwy tylko dla zalogowanych użytkowników (aktywacja konta przez e-mail).
Mateusz Hajdziony

@pogoking Jedną rzeczą, którą warto wziąć pod uwagę, jest to, że łącza bezpośrednie użytkownika lub autora mogą zostać zerwane po umożliwieniu użytkownikom zmiany ich nazw użytkownika, jeśli włączone są ładne łącza bezpośrednie, więc może być konieczne podjęcie środków w celu zrekompensowania tego.
Ahmad M.

1
musiałem dodać globalną $ wpdb; aby działało
Mau

4
Stary post, ale zastanawiam się nad zrobieniem tego sam, warto sprawdzić, czy nie ma innego użytkownika z tym samym loginem_logowania zarejestrowanym w Twojej witrynie, ponieważ formularz logowania najwyraźniej używa tej wartości do wyszukiwania kont i dopasowania
skrótów

4

Możesz również rozważyć zmianę nazwy_użytkownika za pomocą zapytania SQL. Gdy to zrobisz, wszystkie permalinki i inne funkcje będą działać idealnie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.