Cómo cambiar la contraseña de wordpress sin cerrar sesión (se necesita un complemento)

2

Necesito cambiar la contraseña de WP sin el perfil de cierre de sesión. Cuando uso wp_set_password ($ password, $ user_ID) tengo un problema con el cierre de sesión.

    
pregunta Ad2 05.05.2015 - 11:31

4 respuestas

2

Puedes intentarlo debajo del código. No se desconectará después de cambiar la contraseña.

$userdata['ID'] = 1; //user ID
$userdata['user_pass'] = 'new_password';
wp_update_user( $userdata );

Disfruta;)

    
respondido por el Mayur Chauhan 11.02.2016 - 11:16
2

Si está cambiando la contraseña para el usuario que ha iniciado sesión actualmente, se cerrará su sesión. Tienes que volver a iniciar sesión:

// Get current logged-in user.
$user = wp_get_current_user();

// Change password.
wp_set_password($new_password, $user->ID);

// Log-in again.
wp_set_auth_cookie($user->ID);
wp_set_current_user($user->ID);
do_action('wp_login', $user->user_login, $user);

Tenga en cuenta que, dado que está configurando una nueva cookie de inicio de sesión (es decir, cambiando los encabezados), debe ejecutar este código antes de cualquier otra salida (HTML o ecos).

    
respondido por el liviucmg 28.04.2017 - 14:41
0

No tengo un ejemplo práctico, solo sugerencias para pensar sobre este tema. La función para establecer una nueva contraseña a través de la función de núcleo es correcta. Pero si está utilizando esta función en la página de actualización del usuario, el usuario se desconectará automáticamente ya que está eliminando la memoria caché del usuario que ha iniciado sesión.

Después del cierre de sesión, ¿puedes enlazar con wp y crear un nuevo inicio de sesión? Debe hacer esto, antes de que se envíe algo a través de 'encabezados'.

'add_action( 'wp', 'your_login' );'

También piense en la cookie del inicio de sesión: wp_set_auth_cookie ! También puede eliminar el caché actual para el usuario: wp_cache_delete() .

Tal vez esta pregunta y sus respuestas te ayuden, el mismo tema .

    
respondido por el bueltge 05.05.2015 - 11:59
0
function change_client_password() {
    $current_user     = $_POST['current_user'];
    $current_password = $_POST['current_password'];
    $new_password     = $_POST['new_password'];
    $confirm_password = $_POST['confirm_password'];
    $user             = get_user_by( 'ID', $current_user );

    $result = wp_check_password( $current_password, $user->data->user_pass, $current_user );

    if ( $result ) {
        if ( $new_password == $confirm_password ) {
            wp_set_password( $new_password, $current_user );
            wp_set_auth_cookie ( $current_user );
            wp_set_current_user( $current_user );
            do_action('wp_login', $user->user_login, $user );
            echo 'Your new password is changed.';
        } else {
            echo 'Your current password is correct, but the new and confirm passwords do not match.';
        }
    } else {
        echo 'Your current password is incorrect.';
    }

    wp_die();
}
    
respondido por el Dragi Postolovski 26.07.2018 - 14:36

Lea otras preguntas en las etiquetas