Cómo cambiar la contraseña de un usuario mediante programación

17

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

Ahora lo que me dejó perplejo es cambiar la contraseña del usuario. ¿Hay alguna función incorporada de wordpress, por ejemplo, change_user_password ($ user_id, $ new_password)? Me sorprende no poder buscar nada que haga esto.

Lo peor es lo peor que estoy haciendo UPDATE wp_users SET user_pass = md5($new_password) WHERE ID = $user_id, pero me sorprendería mucho si no hay una función para este.

Ardee Aram
fuente
1
md5para las contraseñas en WordPress está en desuso (pero sigue siendo compatible con versiones anteriores; la próxima vez que el usuario inicie sesión la contraseña se volverá a cifrar y se volverá a guardar). Es mejor pasar por API para que se use el esquema de hashing actual y más complejo.
Rarst
Sí, esa es mi suposición también. Las contraseñas almacenadas en la base de datos no coinciden con un MD5 con la contraseña entrante. Entonces sí, de hecho se ha vuelto a compartir.
Ardee Aram

Respuestas:

23
wp_set_password( $password, $user_id );

Ver referencia para más detalles.

Rarst
fuente
1
He votado esto esencialmente porque esto da como resultado una sola consulta SQL. Excelente, si la contraseña es, todo lo que desea actualizar. wp_update_userda como resultado aproximadamente 14 consultas en ejecución.
John