¿Cómo cambiar programáticamente el nombre de usuario (user_login)?


15

Como en el título, ¿cómo cambiar programáticamente el inicio de sesión del usuario?

Quería usar la wp_insert_userfunción, pero parece que al actualizar el usuario actual, no cambia su nombre de usuario. ¿Debo usar $wpdb->updatepara eso? En caso afirmativo, ¿cómo se vería el código para cambiar el nombre de usuario? ¿Qué consecuencias tendría cambiar el inicio de sesión de usuario, dado que la API de WordPress no permite cambiar los nombres de usuario?

Respuestas:


21

Estaba seguro de que esa wp_update_userfunción debería hacer esto ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Incluso obtiene user_login como parámetro, pero parece que lo ignora cuando configura este parámetro.

Entonces, este código se ve bien, pero no funciona como desearía :(:

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

Debe llamar a una consulta SQL personalizada para actualizar user_login:

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

Funciona bien y no creo que tenga consecuencias graves, ya que WP utiliza la identificación de los usuarios para asignar publicaciones / comentarios (y así sucesivamente) al usuario.

El único problema en el que puedo pensar es que cuando este usuario está actualmente conectado, se cerrará la sesión después del cambio user_login.


1
En realidad, no, verifique las notas para esta función (así como el código): tenga en cuenta que no podemos cambiar los nombres de usuario a través de esta función, de hecho, los nombres de usuario no se pueden cambiar desde el panel de administración, ya que WordPress no permite los nombres de usuario a estar actualizado.
Mateusz Hajdziony

Gracias, eso funciona muy bien! Sin embargo, no se preocupe por los usuarios conectados, ya que solo permito el cambio de nombre de usuario para los usuarios desconectados (activación de la cuenta por correo electrónico).
Mateusz Hajdziony

@pogoking Una cosa que quizás desee considerar es que los enlaces permanentes de usuarios o autores pueden romperse después de permitir que los usuarios cambien sus nombres de usuario si se habilitan enlaces permanentes, por lo que es posible que deba tomar medidas para compensar eso.
Ahmad M

1
necesitaba agregar global $ wpdb; para que funcione
Mau

44
Publicación anterior, pero estoy pensando en hacer esto yo mismo, valdría la pena verificar que no haya otro usuario con el mismo user_login registrado en su sitio, ya que el formulario de inicio de sesión obviamente usa este valor para encontrar cuentas y hacer coincidir hashes de contraseñas
haxxxton

4

También podría considerar cambiar el nombre_nombre_usuario a través de la consulta SQL. Una vez hecho esto, todos los enlaces permanentes y otras funciones funcionarán perfectamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.