Hola a todos,
Actualmente estoy trabajando en el siguiente plugin:
Código PHP:
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
add_filter( 'authenticate', 'dr_email_login_authenticate', 20, 3 );
add_action('wp_login_failed', 'login_failed_func');
function login_failed_func($email){
$errors = new WP_Error();
// Validar formato de email
if ( ! is_email( $email ) ) {
return $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn’t correct.' ) );
// Validar que el email no existe en la BD
} elseif ( get_user_by_email($email) ) {
return $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) );
}
echo 'Usuario no existe';
}
function dr_email_login_authenticate( $user, $username, $password ) {
$user = get_user_by_email( $username );
if ( $user ) {
$username = $user->user_login;
}
return wp_authenticate_username_password( null, $username, $password );
}
Como pueden ver me permite logear con el email y la contraseña, el problema es que uno de los requerimientos es que si el email no existe en la BD que automaticamente se registre el usuario en la BD con el email y la contraseña que se escribio en el formulario.
Puedo llegar al punto en el que valido si el email existe, pero el action wp_login_failed solo me pasa el usuario (o email en este caso) y no la contraseña, y necesito ambos para hacer el registro automatico.
Trate utilizando $_REQUEST['user_pass'] pero no me muestra nada...
Alguno sabe que puedo hacer para obtener el password??
Saludos y gracias de antemano!