Login redirect zur vorherigen Seite

Ich habe eine benutzerdefinierte Anmeldeseite unter http://netballscoop.com/log-in/

Wenn Sie den Benutzernamen und das Passwort eingeben, werden Sie auf die vorherige Seite weitergeleitet, auf der Sie gerade waren. Wenn Sie auf Abmelden klicken, werden Sie auf die gleiche Seite weitergeleitet. Das alles funktioniert also gut.

Wenn Sie den Benutzernamen / das Passwort leer lassen oder einen Fehler haben, führt dies zu wp-login. Um dies zu verhindern, habe ich den Code von https://stackoverflow.com/questions/11477107/redirect-away-from-login-page verwendet

add_action('login_redirect', 'redirect_login', 10, 3); function redirect_login($redirect_to, $url, $user) { if($user->errors['empty_password']){ wp_redirect(get_bloginfo('url').'/log-in-error/'); } else if($user->errors['empty_username']){ wp_redirect(get_bloginfo('url').'/log-in-error/'); } else if($user->errors['invalid_username']){ wp_redirect(get_bloginfo('url').'/log-in-error/'); } else if($user->errors['incorrect_password']){ wp_redirect(get_bloginfo('url').'/log-in-error/'); } else{ wp_redirect(get_bloginfo('url').'/log-in'); } exit; } 

Dies funktioniert hervorragend für Anmeldeerrors auf meiner Website. Aber jetzt führt Sie die Login-Weiterleitung zu http://netballscoop.com/members/testing (Der Benutzer ‘Testing’ wird für die Profilseite ihres BuddyPress-Mitglieds verwendet).

Wie leite ich den Benutzer auf die vorherige Seite um, wenn er sich anmeldet?

Solutions Collecting From Web of "Login redirect zur vorherigen Seite"

Sie können die function login_redirect so filtern, dass sie sich an Ihre Bedürfnisse anpasst.

 add_filter('login_redirect', 'redirect_previous_page', 10, 1); function redirect_previous_page( $redirect_to ){ global $user; $request = $_SERVER["HTTP_REFERER"]; if ( in_array( $user->roles[0], array( 'administrator') ) ) { return admin_url(); } elseif ( in_array( $user->roles[0], array( 'subscriber') ) ) { return $request; } return $redirect_to; } 

Update 1:

Code (oben) wurde oben geändert und getestet – es funktioniert.

Update 2: (von Tanya)

Chatted mit @userabuser und kam zu dieser Antwort, die funktioniert.

 // Redirect to previous page remove_all_filters('login_redirect', 99); add_filter('bbp_user_login_redirect_to', 'function_name'); 

Wichtige Notiz:

Es stellt sich heraus, dass Tanya das bbPress forum Plugin benutzt, also trotz des originalen Snippets, welches

 add_filter('login_redirect', 'function_name'); //the standard WordPress API filter 

was korrekt ist und unter “normalen” WordPress-Bedingungen funktioniert, wurde in diesem Fall vorrangig vom bbPress-Filter überschrieben,

 add_filter('bbp_user_login_redirect_to', 'function_name'); //the bbPress API filter 

Jetzt, da die Dokumentation auf der bbPress.org- Website, die diese Aktionen und Hooks detailliert beschreibt, schlecht organisiert und etwas unvollständig ist (soweit ich das beurteilen kann), schlage ich vor, dass (jeder) weitere Informationen darüber sucht, was wo wo hakt und was was filtert Ein Blick auf diese Ressource hier, die eine detaillierte Liste von Hooks und Filtern bietet.

Anmerkungen: (Verschiedenes)

Ändern Sie 'subscriber' , dass sie der Rolle entspricht, die Sie für diesen Benutzertyp verwenden. Es kann auch mehrere Rollen akzeptieren, da es in Form eines Arrays vorliegt.

 in_array( $user->roles[0], array( 'subscriber', 'role2, role3', 'etc')