Redirect wenn $ _Server ist /wp-login.php?checkemail=registriert

Diese Frage erweitert die Frage Umleiten an benutzerdefinierte URL, wenn die Registrierung fehlschlägt? :

In seinem Kommentar bemerkte He Shiming ..

add_action den Benutzer bei einer erfolgreichen Registrierung umzuleiten, muss man add_action für login_head und prüfen, ob $_SERVER['REQUEST_URI'] /wp-login.php?checkemail=registered , und zum richtigen Redirect redirect. Angenommen, es gibt einen Filter namens registration_redirect , aber es funktioniert nicht

Ich versuche, dies in Code zu übersetzen, hier ist, was ich habe:

 function redirect_after_success() { if ($_SERVER['REQUEST_URI']=='/wp-login.php?checkemail=registered'){ $redirect_url = get_bloginfo('url') . '/register'; wp_redirect( $redirect_url ); exit; } } add_action('login_head','redirect_after_success'); 

Diese function scheint nicht korrekt zu sein. Ich werde immer noch zu http://../register/?login=failed weitergeleitet, auch nach erfolgreichen Registrierungen.

Hier sind die anderen functionen, die unvollständige / ungültige Registrierungen behandeln:

  // hook failed login add_action('wp_login_failed', 'my_frontend_login_fail'); function my_frontend_login_fail($username){ // Get the reffering page, where did the post submission come from? $referrer = add_query_arg('login', false, $_SERVER['HTTP_REFERER']); // if there's a valid referrer, and it's not the default log-in screen if(!empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin')){ // let's append some information (login=failed) to the URL for the theme to use wp_redirect($referrer . '?login=failed'); exit; } } //hook empty login submit add_action( 'login_head', 'my_frontend_login_no_pass_no_username' ); function my_frontend_login_no_pass_no_username(){ $referrer = add_query_arg('login', false, $_SERVER['HTTP_REFERER']); if ( (!isset($_REQUEST['user_login']) || ( isset( $_REQUEST['user_login'] ) && trim( $_REQUEST['user_login'] ) == '' ) ) || (!isset($_REQUEST['user_pass']) || ( isset( $_REQUEST['user_pass'] ) && trim( $_REQUEST['user_pass'] ) == '' ) ) ){ wp_redirect( add_query_arg('login', 'failed', $referrer) ); exit; } } // unsuccessfull registration 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') . '/register'; //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; } } 

Solutions Collecting From Web of "Redirect wenn $ _Server ist /wp-login.php?checkemail=registriert"

http://codex.wordpress.org/Plugin_API/Action_Reference/user_register

Die Frage, auf die Sie verwiesen haben, verwendet den ‘register_post’-Hook, der kurz bevor der Benutzer in die database eingegeben wird. Wenn die Registrierung erfolgreich ist, klingt das so, als ob Sie redirect möchten. Verwenden Sie also den Hook, der unmittelbar nach der Eingabe des Benutzers in die database ausgetriggers wird.

TL; DR Verwenden Sie den ‘user_register’ -Hook anstelle von ‘login_head’

Haben Sie versucht, die Aktion template_redirect ? Ich benutze es immer, wenn es keine andere Aktion gibt, an die ich mich anschließen kann.

 add_action( 'template_redirect', 'wpse138854_register_redirect' ); function wpse138854_register_redirect() { if ( isset( $_GET['checkemail'] ) && 'registered' == $_GET['checkmail'] ) { wp_redirect( get_bloginfo('url') . '/register' ); } }