2009-12-29 18 views
17

Ho un sito Web con un sistema utente. Voglio integrare il sistema utente di wordpress in quello del sito web, ma voglio comunque utilizzare il registro del sito web/le pagine di accesso. Non voglio che nessuno sia in grado di accedere o registrarsi utilizzando i moduli di accesso o di registrazione di Wordpress. Invece, quando cercano di accedere alle pagine di login/registrazione in Wordpress, voglio che quelle pagine li reindirizzino alle mie pagine di login/registrazione.Reindirizzare la pagina di accesso/registrazione di Wordpress a una pagina di accesso/registrazione personalizzata

C'è un modo per farlo? Ho provato Google, ma tutto quello che ho trovato è stato il reindirizzamento DOPO che l'utente si registra o registra, che non è quello che voglio.

Grazie in anticipo.

risposta

23

Per questo è necessario reindirizzare la pagina di accesso/registrazione alle pagine personalizzate. Quindi, scrivi questo codice nel tuo file functions.php sotto la cartella dei temi attivata. Passa il tuo percorso di pagina personalizzato come argomento.

add_action('init','possibly_redirect'); 

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

Dove devo registrare chiamata add_action? dove lo chiamo? mi scusi per essere uno sviluppatore .Net. –

+0

Hai due opzioni. O butta il codice sopra in un plugin o crea un function.php nella cartella dei tuoi temi e aggiungi quanto sopra. – nickohrn

+5

Si dovrebbe aggiungere che facendo ciò si disabilita la possibilità di disconnessione a meno che non sia esplicitamente fatto dalla pagina di destinazione dell'obiettivo. – thinice

1

Potrebbe essere possibile agganciare il gancio login_head e inviare un reindirizzamento lì.

17

per limitare l'accesso diretto solo per 'wp-login.php', senza POST o GET richiesta (utile per le forme ajax personalizzato d'accesso), io uso la funzione avanzata:

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

Questo funziona meglio per più scenari, grazie. – Chozen

+0

La risposta accettata non funziona per quelli di noi che usano wp_login_form() - usa invece questo. – piersb

2

Se Stai facendo uso di una pagina di login personalizzata, ma continuando a utilizzare wp_login_form(), tieni presente che il modulo eseguirà il POST su wp-login.php, quindi dovrai controllare se $ _POST è vuoto prima di reindirizzare.

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

Il gancio azione corretta è login_init che solo incendi su wp-login.php.

Qui, non ?action=action-name viene data della richiesta, quindi è la pagina di accesso principale:

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

Per tutte le richieste, possiamo usare un gancio specifica login_form_ACTION-NAME, vale a dire, postpass, logout, lostpassword, retrievepassword, resetpass, register e login. Esempio:

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