wp-login.php – Leite eingeloggte Benutzer zu einer benutzerdefinierten URL um

Wenn sich ein Benutzer anmeldet, können wir die Weiterleitungs-URL leicht ändern (siehe dies , das oder das ), aber wenn der Benutzer in /wp-login.php geht, werden sie zum Dashboard weitergeleitet, wenn sie bereits eingeloggt sind .

Meine Frage ist, wenn der Benutzer /wp-login.php besucht und bereits angemeldet ist, wie kann ich sie an eine benutzerdefinierte URL redirect?

Solutions Collecting From Web of "wp-login.php – Leite eingeloggte Benutzer zu einer benutzerdefinierten URL um"

Der beste Weg herauszufinden, was für ein Problem wie dieses passiert, ist, zur Quelle zu gehen. Buchstäblich.

Schauen Sie in wp-login.php und suchen Sie nach einer Aktion, die wp-login.php , bevor HTML-Rendering stattfindet. Der Haken, nach dem Sie suchen, ist login_init . Fügen Sie einen callback hinzu, überprüfen Sie, ob der Benutzer angemeldet ist, und leiten Sie ihn ggf. um.

Der einzige andere Haken ist, dass wp-login.php auch die Abmeldung übernimmt. Sie müssen also die globale $action Variable überprüfen, um sicherzustellen, dass keine Abmeldung stattfindet.

 add_action('login_init', 'wpse187831_redir_loggedin'); function wpse187831_redir_loggedin() { global $action; if ('logout' === $action || !is_user_logged_in()) { return; } wp_redirect(apply_filters( 'wpse187831_loggedin_redirect', current_user_can('read') ? admin_url() : home_url(), wp_get_current_user() ), 302); exit; } 

Da sind ein paar Extras drin:

  • Ein Aufruf von apply_filters damit andere Plugins meine Weiterleitung apply_filters und ändern können, wenn sie apply_filters . Dieser Filter erhält die Weiterleitung selbst sowie den aktuellen Benutzer.
  • Es wird überprüft, ob der aktuelle Benutzer tatsächlich auf den Admin-Bereich zugreifen kann, bevor er dorthin weitergeleitet wird.

Hier ist das kleine Snippet als Plugin .

Sie können überprüfen, ob die aktuelle Seite $pagenow ist oder nicht die globale Variable $pagenow und die benutzerdefinierte URL wp_redirect() in der Bedingung is_user_logged_in

 function redirect_logged_in_user() { if( is_user_logged_in ) { wp_redirect('http://customurl'); } } global $pagenow; if( $pagenow == 'wp-login.php') redirect_logged_in_user();