Beschränken Sie den Zugriff auf wp-login.php

Ich habe eine hart codierte Login / register / Passwort verloren Formular in der Seitenleiste meines Themas. Ich verwende versteckte Eingabe für “redirect_to”, die gut funktioniert. Aber wenn ich die Login-Taste drücke, ohne etwas einzugeben oder wenn ein Fehler auftritt, wird auf die Seite wp-login.php weitergeleitet.

Ich möchte nicht, dass das passiert. Wenn ein Fehler auftritt, sollte er an der aktuellen Stelle angezeigt werden. Wie kann ich das machen.

Hinweis: Dies ist für die Abmeldefunktion erforderlich. Grundsätzlich möchte ich niemandem die wp-login.php-Seite um jeden Preis zeigen.

Solutions Collecting From Web of "Beschränken Sie den Zugriff auf wp-login.php"

Die Aktion wp_login_failed wird wp_login_failed wenn aufgrund einer errorshaften Kombination aus Benutzername und Passwort eine Anmeldung fehlgeschlagen ist. Das ist also ein guter Anfang. Dies ist ein sehr einfaches Beispiel, das nur auf die Homepage umleitet.

 < ?php add_action( 'wp_login_failed', 'wpse25628_login_failed', 10, 1 ); /** * Catches all failed logins and redirect them to the * websites home page. */ function wpse25628_login_failed( $username ) { /* May want to do something here to give the user feedback for instance call `global $user;`, which will be a wp_error object, you could append the code as a $_GET variable and adjust your front end according to the error message */ wp_redirect( home_url(), 302 ); exit(); } 

Und natürlich gibt es auch einen wp_logout Haken! Vielleicht schicken Sie den Leuten hier eine Dankeseite anstatt der Homepage.

 < ?php add_action( 'wp_logout', 'wpse25628_catch_logout' ); /** * When a user logs out, send them back to the home page */ function wpse25628_catch_logout() { wp_redirect( home_url(), 302 ); exit(); } 

Leider wird der wp_login_failed Hook nicht wp_login_failed wenn ein Benutzername oder ein Passwort leer ist. Ebenso unglücklich ist der Mangel an Haken, die gefeuert werden, wenn dies passiert. Es ist wahrscheinlich besser, diese Art von Sache auf der Client-Seite mit Javascript zu validieren. Hier ist ein kurzes Beispiel.

 jQuery(document).ready(function(){ jQuery('#loginform').submit(function(e){ var errors; jQuery('#loginform input').each(function(){ var val = jQuery(this).val() if( ! val ) { errors = true; } }); if( errors ) { e.preventDefault(); } }); }); 

Sie können auf diese Weise weg von wp-login und anderen Standard-Seiten redirect:

 add_action('plugins_loaded', 'myAction'); function wpSimpleUserSetup() { if (in_array($_SERVER['REQUEST_URI'], array('/wp-login.php', 'wp-login.php?action=register'))) { wp_redirect(wp_login_url()); exit; } } 

Darüber hinaus ist die function wp_login_url () steckbar, so dass Sie sie mit Ihren eigenen überschreiben können:

 function myLoginUrl( $redirect = '', $force_reauth = false ) { return $custom_url; } add_filter( 'login_url', 'myLoginUrl', 9999 );