¿Redirigir a url personalizado cuando falla el registro?

3

Cuando quiero redirigir al usuario después de un registro exitoso, solo uso el gancho de filtro "registration_redirect". ¿Qué tal cuando falla el registro, qué filtro de filtro debo usar? Busqué en wp-login.php pero no vi ningún filtro / gancho de acción que pudiera usar. ¿Cómo hago para esto?

    
pregunta jilseego 02.07.2011 - 11:04

2 respuestas

1

Puede agregar un redireccionamiento htaccess o probar el tema mi complemento de inicio de sesión: enlace . Tiene opciones para la redirección personalizada.

    
respondido por el Innate 13.07.2012 - 23:50
8

Hay una solución más sofisticada en lugar de htaccess o plugin. Para aquellos interesados en este tema, está mi código para redireccionar después (exactamente antes) del intento de reevaluación fallido.

¿Por qué antes? Antes de un intento de registro, WordPress busca un nombre de usuario y una dirección de correo electrónico, ya sea que no estén vacíos, si aún no están en la base de datos, y si el correo electrónico o el nombre de usuario están correctos. Si es así, informa errores y puede enganchar a una función justo después de esta comprobación.

do_action( 'register_post', $sanitized_user_login, $user_email, $errors );

El siguiente paso, que no se puede conectar, es un intento de crear un nuevo usuario. Si esto falla, aparece otro mensaje de error y será redirigido a la pantalla estándar wp_login.php.

Pero, hay un pero. Este proceso, el siguiente paso, simplemente llama a wp_insert_user () y esta función solo falla en empty_user_login, existing_user_login y existing_user_email; de lo contrario, finaliza con éxito. Y si ha leído detenidamente, todas estas variables se verifican antes de llamar a esta función (esta doble verificación es lógica, ya que puede llamar a wp_insert_user directamente desde su complemento).

Entonces, si el proceso de registro falla después del enganche mencionado, falla porque hay algo mal con su instalación de WordPress y, por lo tanto, no es un error de su función de redirección conectada al proceso de registro.

Y, finalmente, algunos códigos para ellos, simplemente querrá copiar y pegar un código para redireccionar a una página personalizada después de que el inicio de sesión falle:

add_action('register_post', 'binda_register_fail_redirect', 99, 3);

function binda_register_fail_redirect( $sanitized_user_login, $user_email, $errors ){
    //this line is copied from register_new_user function of wp-login.php
    $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email );
    //this if check is copied from register_new_user function of wp-login.php
    if ( $errors->get_error_code() ){
        //setup your custom URL for redirection
        $redirect_url = get_bloginfo('url') . '/registrace';
        //add error codes to custom redirection URL one by one
        foreach ( $errors->errors as $e => $m ){
            $redirect_url = add_query_arg( $e, '1', $redirect_url );    
        }
        //add finally, redirect to your custom page with all errors in attributes
        wp_redirect( $redirect_url );
        exit;   
    }
}
    
respondido por el david.binda 04.02.2013 - 14:02

Lea otras preguntas en las etiquetas