leite wp-login.php auf eine andere Seite um

Ich möchte diese Seite wp-login.php auf /login Seite redirect. Wenn also ein Nutzer auf einen Link wie diesen login , wird er von wordpress zu /register .

Ich habe diese function gefunden und modifiziert:

 add_action('init','custom_login'); function custom_login(){ global $pagenow; if (( 'wp-login.php' == $pagenow ) && (!is_user_logged_in())) { wp_redirect('/login'); exit(); } 

Ich bin nicht gut mit WordPress-Codierung.

Die Umleitung funktioniert einwandfrei, aber die Authentifizierung scheint unterbrochen zu sein. Wenn ich meinen Login / Pass eintrage, wird dieselbe Seite ( /login ) neu geladen, ohne authentifiziert zu werden.

Irgendwelche Vorschläge, um die function für die Umleitung zu reparieren?

Solutions Collecting From Web of "leite wp-login.php auf eine andere Seite um"

Wenn Sie nur über Login-Links auf Ihren Seiten besorgt sind, sollten Sie in der Lage sein, die URL durch login_url des login_url Filters zu ändern. Dadurch wird kein Benutzer umgeleitet, der http://MYSITE/wp-login.php direkt in seinen Browser http://MYSITE/wp-login.php Dies sollte jedoch Auswirkungen auf die Login-Links haben, die auf Ihrer Website angezeigt werden.

Dies ist der Beispielcode von der Seite login_url Codex :

 add_filter( 'login_url', 'my_login_page', 10, 2 ); function my_login_page( $login_url, $redirect ) { return home_url( '/my-login-page/?redirect_to=' . $redirect ); } 

1. Ändern Sie Ihre .htaccess Datei – fügen Sie diese Zeile nach der index.php Umschreibungsregel hinzu:

 RewriteRule ^index\.php$ – [L]
RewriteRule ^yoursecretpath$ wp-login.php [L,NC,QSA]

wo yoursecretpath ist der Pfad zum Admin-Panel.

2. login_header function wp-login.php Datei wp-login.phpwp-login.php Sie diesen Code direkt vor Zeile 59 hinzu (wobei das HTML-Dokument doc type tag beginnt, um zu verhindern, dass Header Fehler senden):

 < ?php $uri = $_SERVER['REQUEST_URI']; if(stripos($uri, 'wp-login') or stripos($uri, 'wp-admin') && !stripos($GLOBALS["HTTP_COOKIE"], 'wordpress_logged_in')) { header("Location: ".get_site_url().'/yoursecretpath' ); exit(); } ?> 

Ich habe bereits ein Open-Source-Plugin, das dies bereits tut:

https://github.com/tripflex/wp-login-flow

Es wurde erstellt, um zu verlangen, dass Benutzer ihre E-Mails verifizieren, aber Sie können diese function deaktivieren und nur die Umschreibe-function verwenden, die in der neuesten Version in WordPress Repo (1.0.0) funktioniert.

Sie können den Code ansehen, um zu sehen, wie ich mit den Umschreibungen umgehen kann:

https://github.com/tripflex/wp-login-flow/blob/master/classes/rewrite.php#L312

Ich arbeite gerade daran, um einige wichtige Updates und Patches zu bekommen, aber im Moment funktioniert 1.0.0 perfekt für das Neuschreiben. Genießen 🙂

Wenn Sie eine benutzerdefinierte Anmeldeseite für Ihre Adresse /login Ihr /login erstellen, erstellen Sie eine Neuschreibung:

 function restrict_admin() { if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) { wp_redirect( site_url() ); } } add_action( 'admin_init', 'restrict_admin', 1 ); 

Dieser Code wird prüfen, ob der Benutzer ein Administrator ist und wenn sie nicht WordPress sind, werden sie zurück auf die Website-Homepage geleitet.

Erstellen Sie auch eine Seitenvorlage für Ihre benutzerdefinierte Anmeldung und verwenden Sie die Anmeldeeinstellungen von WordPress in der Vorlage:

 $args = array( 'redirect' => site_url( $_SERVER['REQUEST_URI'] ) ); wp_login_form( $args ); 

Sie können auch die Redirect-Adresse für die Login-Seite ändern. Aber es ist auch nützlich, dass Sie Anmeldeerrors überprüfen und vielleicht Code für die richtige Weiterleitung nach fehlgeschlagener Anmeldung hinzufügen. Verwenden Sie für diese Jobs den Hook wp_login_failed und authenticate .