2009-12-29 6 views
17

Ich habe eine Website mit einem Benutzersystem. Ich möchte das Benutzer-System von wordpress in diese Website integrieren, möchte aber trotzdem die Registrierungs-/Anmeldeseiten der Website verwenden. Ich möchte nicht, dass sich jemand mit den Anmelde- oder Anmeldeformularen von Wordpress anmelden oder registrieren kann. Wenn sie versuchen, auf die Anmelde-/Registrierungsseiten in Wordpress zuzugreifen, möchte ich, dass diese Seiten sie auf meine eigenen Anmelde-/Registrierungsseiten umleiten.Wordpresss Login-/Registrierungsseite auf eine benutzerdefinierte Login-/Registrierungsseite umleiten

Gibt es eine Möglichkeit, dies zu tun? Ich habe Google ausprobiert, aber alles, was ich finden konnte, war die Umleitung, NACH dem der Benutzer sich anmeldet oder registriert, was ich nicht möchte.

Vielen Dank im Voraus.

Antwort

23

Dazu müssen Sie die Anmeldungs-/Registrierungsseite auf Ihre benutzerdefinierten Seiten umleiten. Schreiben Sie diesen Code in Ihre functions.php Datei unter Ihrem aktivierten Theme-Ordner. Übergeben Sie Ihren benutzerdefinierten Seitenpfad als Argument.

add_action('init','possibly_redirect'); 

function possibly_redirect(){ 
global $pagenow; 
if('wp-login.php' == $pagenow) { 
    wp_redirect('http://google.com/'); 
    exit(); 
} 
} 
+0

Wo soll ich add_action aufrufen? Wo nenne ich das? Entschuldigung, ich bin ein .Net-Entwickler. –

+0

Sie haben zwei Möglichkeiten. Entweder werfen Sie den obigen Code in ein Plugin oder erstellen Sie eine functions.php in Ihrem Themes-Ordner und fügen Sie die oben genannten hinzu. – nickohrn

+5

Es sollte hinzugefügt werden, dass dadurch die Abmeldefunktion deaktiviert wird, es sei denn, dies erfolgt explizit über die Zielseite. – thinice

1

Sie können möglicherweise auf den login_head-Hook zugreifen und dort eine Weiterleitung vornehmen.

17

Um einen direkten Zugang nur für 'wp-login.php', ohne POST oder GET Anfrage (nützlich für individuelle Ajax Login-Formulare) zu beschränken, ich die erweiterte Funktion:

function possibly_redirect(){ 
    global $pagenow; 
    if('wp-login.php' == $pagenow) { 
    if (isset($_POST['wp-submit']) || // in case of LOGIN 
     (isset($_GET['action']) && $_GET['action']=='logout') || // in case of LOGOUT 
     (isset($_GET['checkemail']) && $_GET['checkemail']=='confirm') || // in case of LOST PASSWORD 
     (isset($_GET['checkemail']) && $_GET['checkemail']=='registered')) return; // in case of REGISTER 
    else wp_redirect(home_url()); // or wp_redirect(home_url('/login')); 
    exit(); 
    } 
} 
add_action('init','possibly_redirect'); 
+0

Dies funktioniert besser für mehr Szenarien, danke. – Chozen

+0

Die angenommene Antwort funktioniert nicht für diejenigen von uns, die wp_login_form() verwenden - verwenden Sie stattdessen diese. – piersb

2

Wenn Sie Wenn Sie eine benutzerdefinierte Anmeldeseite verwenden, aber immer noch wp_login_form() verwenden, beachten Sie, dass das Formular an wp-login.php gesendet wird. Sie sollten also vor dem Weiterleiten prüfen, ob $ _POST leer ist.

function prefix_wp_login_redirect() { 
    global $pagenow; 
    if($pagenow == 'wp-login.php' && empty($_POST)) { 
    auth_redirect(); 
    exit(); 
    } 
} 
1

die richtige Aktion Haken ist login_init dass nur Brände auf wp-login.php.

Hier wird kein ?action=action-name angefordert wird, so ist es die Haupt-Login-Seite:

add_action('login_init', function(){ 
    if(!isset($_GET['action'])) { 
     wp_redirect('http://example.com'); 
    } 
}); 

Für alle Anfragen haben wir einen speziellen Haken verwenden können login_form_ACTION-NAME, dh postpass, logout, lostpassword, retrievepassword, resetpass, register und login. Beispiel:

add_action('login_form_register', function(){ 
    wp_redirect(site_url('custom-registration/')); 
}); 
Verwandte Themen