Tengo una página de "cambiar contraseña".
¿Hay alguna forma de redireccionar esa página cuando el usuario login first time
usa una contraseña generada por wordpress?
Gracias
Tengo una página de "cambiar contraseña".
¿Hay alguna forma de redireccionar esa página cuando el usuario login first time
usa una contraseña generada por wordpress?
Gracias
Tal vez esto te ayuda?
Parece que tuvo un problema similar y lo resolvió hace un año.
Lo que él hace diferente a su enfoque es redirigir 48 horas después del registro. Tal vez esto sea suficiente?
Si no, quiero hacerlo a tu manera.
--- EDITAR
Bien, acabo de crear un complemento que hace exactamente lo que quieres:
/*
Plugin Name: Redirect Passwort
Plugin URI: TODO
Description: TODO
Author: xaeDes
Version: 0.1
Author URI: TODO
License: GPL2
*/
function redirect_passwort_profile_update($user_id, $old_user_data) {
$user = new WP_User( $user_id );
if( $user->data->user_pass != $old_user_data->user_pass) {
//password has changed
update_metadata("user",$user_id,"changed_password",true);
}
}
add_action("profile_update", "redirect_passwort_profile_update", 10, 2);
function redirect_passwort_login_redirect($redirect_to, $url_redirect_to = '', $user = null) {
if( isset($user->ID) ) {
$changed_password = get_metadata("user", $user->ID, "changed_password",true);
if( $changed_password != true ) {
return get_bloginfo('url') . "/change-your-password-dude/";
} else {
return $redirect_to;
}
}
}
add_filter('login_redirect', 'redirect_passwort_login_redirect',10,3);
function redirect_passwort_password_reset( $user ) {
//password has been reset to a random one. so the changed_password meta data should be reset as well
if( isset($user->ID) ) {
delete_metadata("user", $user->ID, "changed_password");
}
}
add_action('password_reset', 'redirect_passwort_password_reset');
Agrega un metadatos de usuario "changed_password" al usuario que cambió su contraseña.
Al iniciar sesión, comprueba si los metadatos del usuario "changed_password" están configurados y redirige si no están configurados (y, por lo tanto, el usuario no ha cambiado su contraseña ni una sola vez).
Cuando la contraseña del usuario se restablece a una aleatoria, los metadatos del usuario "changed_password" también se restablecen.
Enganche user_register y agregar metadatos del usuario para almacenar un indicador" aún no ha iniciado sesión ". Enganche wp_login y compruebe los metadatos, elimine y redirija si existe, de lo contrario realice el comportamiento de inicio de sesión normal.
Además de la respuesta de Milo:
function after_user_register( $user_id ){
// the new user just registered but never logged in yet
add_user_meta($user_id, "has_not_logged_in_yet", "true", true);
}
add_action( 'user_register', 'after_user_register', 10, 1 );
function after_user_loggedin(){
if(is_user_logged_in()){
$user_id=get_current_user_id();
$user_meta=get_user_meta($user_id);
if(isset($user_meta['has_not_logged_in_yet'])){
delete_user_meta($user_id, "has_not_logged_in_yet");
//do something else
}
}
}
add_action( 'init', 'after_user_loggedin');
Editar (FYI)
Hook wp_login
no se está desempeñando muy bien en términos de la meta recuperación del usuario. En ocasiones, devuelve FALSE
con el usuario que inició sesión.
Lea otras preguntas en las etiquetas login redirect password wp-redirect