Làm cách nào để thay đổi tên người dùng (user_login) theo chương trình?


15

Như trong tiêu đề, làm thế nào để thay đổi đăng nhập của người dùng?

Tôi muốn sử dụng wp_insert_userchức năng, nhưng có vẻ như khi cập nhật người dùng hiện tại, nó không thay đổi tên người dùng của họ. Tôi có nên sử dụng $wpdb->updatecho điều đó? Nếu có, mã thay đổi tên người dùng sẽ như thế nào? Hậu quả gì sẽ thay đổi đăng nhập người dùng, do API WordPress không cho phép thay đổi tên người dùng?

Câu trả lời:


21

Tôi chắc chắn rằng wp_update_userchức năng đó sẽ làm điều này ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Nó thậm chí còn lấy user_login làm param, nhưng có vẻ như nó bỏ qua nó, khi bạn đặt param này.

Vì vậy, mã này có vẻ ổn, nhưng nó không hoạt động như bạn mong muốn :(:

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

Bạn phải gọi truy vấn SQL tùy chỉnh để cập nhật user_login:

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

Nó hoạt động tốt và tôi không nghĩ nó có bất kỳ hậu quả nghiêm trọng nào, vì WP sử dụng ID người dùng để gán bài đăng / nhận xét (v.v.) cho người dùng.

Vấn đề duy nhất tôi có thể nghĩ đến là khi người dùng này hiện đang đăng nhập, anh ta sẽ bị đăng xuất sau khi user_login thay đổi.


1
Không thực sự, hãy kiểm tra các ghi chú cho chức năng này (cũng như mã): Xin lưu ý rằng chúng tôi không thể thay đổi tên người dùng thông qua chức năng này, trên thực tế, tên người dùng cũng không thể thay đổi từ bảng điều khiển quản trị viên vì WordPress không cho phép tên người dùng đã được cập nhật.
Mateusz Hajdziony

Cảm ơn, điều đó làm việc tuyệt vời! Tuy nhiên, không phải lo lắng về người dùng đã đăng nhập, vì tôi chỉ cho phép thay đổi tên người dùng cho người dùng đã đăng xuất (kích hoạt tài khoản qua e-mail).
Mateusz Hajdziony

@pogoking Một điều bạn có thể muốn xem xét là permalinks của người dùng hoặc tác giả có thể bị hỏng sau khi cho phép người dùng thay đổi tên người dùng của họ nếu permalinks đẹp được bật, vì vậy bạn có thể cần phải thực hiện các biện pháp để bù đắp cho điều đó.
Ahmad M

1
tôi cần thêm $ wpdb toàn cầu; để làm cho nó hoạt động
Mau

4
Bài đăng cũ, nhưng tôi đang tự mình làm điều này, sẽ đáng để kiểm tra xem không có người dùng nào khác có cùng user_login đã đăng ký trên trang web của bạn vì hình thức đăng nhập rõ ràng sử dụng giá trị này để tìm tài khoản và khớp băm mật khẩu
haxxxton

4

Bạn cũng có thể xem xét thay đổi tên người dùng thông qua truy vấn SQL. Một khi điều này được thực hiện, tất cả các permalinks và các chức năng khác sẽ hoạt động hoàn hảo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.