Cómo cambiar la contraseña de un usuario programáticamente

21 feb 2011, 03:53:08
Vistas: 39.1K
Votos: 23

Estoy tratando de crear una página de perfil totalmente diferente (no la proporcionada por WordPress), ya que el diseño y la apariencia de la página de perfil predeterminada es demasiado "WordPress" para los usuarios. Ahora he logrado presentar una página que puede modificar los metadatos del usuario como nombre, apellido, ciudad, código postal, etc.

Ahora lo que me tiene confundido es cambiar la contraseña del usuario. ¿Existe alguna función incorporada de WordPress, por ejemplo change_user_password($user_id, $new_password)? Me sorprende no poder encontrar nada que haga esto.

En el peor de los casos estoy haciendo un UPDATE wp_users SET user_pass = md5($new_password) WHERE ID = $user_id, pero me sorprendería mucho si no existe una función para esto.

2
Comentarios

El uso de md5 para contraseñas en WordPress está obsoleto (pero sigue siendo compatible con versiones anteriores - la próxima vez que el usuario inicie sesión, la contraseña será rehasheada y guardada nuevamente). Es mejor utilizar la API para que se emplee el esquema de hashing actual y más complejo.

Rarst Rarst
21 feb 2011 12:27:43

Sí, esa es mi suposición también. Las contraseñas almacenadas en la base de datos no coinciden con un MD5 de la contraseña entrante. Así que sí, efectivamente se está rehasheando.

Ardee Aram Ardee Aram
28 feb 2011 09:14:21
Todas las respuestas a la pregunta 2
1
39
wp_set_password( $password, $user_id );

Consulta la referencia para más detalles.

21 feb 2011 10:49:01
Comentarios

Voté a favor esto principalmente porque resulta en una sola consulta SQL. Excelente, si lo único que deseas actualizar es la contraseña. wp_update_user ejecuta alrededor de 14 consultas.

John John
16 jul 2012 22:31:23
0
17

Un simple wp_update_user(array('ID' => $userid, 'user_pass' => 'myNeWpaSSword')) hará todo por ti - wp_update_user() (Codex).

Como nota adicional: ¿conoces el plugin Theme My Login para WordPress? Puede proporcionarte una página de perfil en el front-end.

21 feb 2011 04:12:39