Weiterleitung zur Anmeldeseite

Ich bin neu in WordPress. Ich starte WordPress Setup auf http://localhost/wordpress/ . Ich stehe jetzt vor zwei Problemen:

  • Nur die angemeldeten Benutzer können auf die Site zugreifen. Also versuche ich, den Gast von der Startseite auf die Anmeldeseite umzuleiten, indem ich den folgenden Code benutze, der irgendwie nicht funktioniert:

Pfad: wp-content/themes/twentysixteen/header.php

   

Da der obige Code nicht funktionierte, versuchte ich weiterzumachen, indem ich den Benutzer manuell anmelden ließ, indem ich auf die login Schaltfläche login . Hier ist der Arbeitscode:

  <a href="https://wordpress.stackexchange.com/questions/227115/redirect-to-login-page/" title="Login">Login  
  • Wenn der Gast auf den Login-Code geklickt hat, hat er auf die Anmeldeseite umgeleitet. Wenn sich der Benutzer anmeldet, leitet die Seite auf wordpress admin dh wp-admin statt auf die Homepage um, zB http://localhost/wordpress .

Was ich versuche zu tun ist:

  • Leiten Sie den Gast von der Startseite zur Anmeldeseite um, wenn der Benutzer nicht angemeldet ist.
  • Und dann leiten Sie den Benutzer von der Anmeldeseite auf die Startseite um, anstatt auf wp-admin, wenn sich der Benutzer anmeldet.

Solutions Collecting From Web of "Weiterleitung zur Anmeldeseite"

Wenn ich richtig verstanden habe, müssen Sie überprüfen, ob der Benutzer angemeldet ist, wenn nicht, redirect Sie es auf die Anmeldeseite. Wenn sich der Benutzer erfolgreich anmeldet, sollte er auf die Seite umgeleitet werden, die er sehen wollte. Sie können dies tun, indem Sie das redirect Argument von wp_login_url() .

Dieser Code sollte funktionieren (nicht getestet):

 add_action( 'init', 'cyb_restrict_guest_access' ); function cyb_restrict_guest_access() { global $wp; if( ! is_user_logged_in() && ! cyb_is_login_page() ) { wp_redirect( wp_login_url( site_url( $wp->request ) ) ); exit; } } function cyb_is_login_page() { return in_array($GLOBALS['pagenow'], array('wp-login.php')); } 

Sie können den folgenden Code verwenden, um die Startseite zu überprüfen oder nicht:

  if(is_home() && !is_user_logged_in()){ wp_redirect( wp_login_url() ); exit; } 

Dies wird in Ihrer header.php oder vor dem Aufruf von get_header () in einer beliebigen Vorlage einen Benutzer redirect, der nicht eingeloggt ist und versucht, eine Seite Ihrer Website auf die Anmeldeseite zu erreichen:

 if( !is_user_logged_in() ) { wp_redirect( wp_login_url() ); exit; } 

Dadurch werden alle Benutzer nach der Anmeldung auf die Startseite umgeleitet:

 function tbdn_login_redirect( $redirect_url ) { return home_url(); } add_filter( 'login_redirect', 'tbdn_login_redirect' ); 

Beachten Sie, dass ein angemeldeter Benutzer nicht daran gehindert wird, auf die Admin-Bildschirme zuzugreifen, wenn er die URL kennt oder wenn bei seiner Anmeldung die Admin-Leiste aktiviert ist.