Login reindirizza alla pagina precedente


8

Ho una pagina di accesso personalizzata su http://netballscoop.com/log-in/

Quando inserisci il nome utente e la password ti reindirizza alla pagina precedente in cui ti trovavi perfettamente. Quando fai clic su Disconnetti, ti reindirizza alla stessa pagina. Quindi funziona tutto bene.

Se si lascia vuoto il nome utente / la password o si verifica un errore, si accederà a wp-login. Per evitare ciò, ho usato il codice da /programming/11477107/redirect-away-from-login-page

add_action('login_redirect', 'redirect_login', 10, 3);
function redirect_login($redirect_to, $url, $user) {
if($user->errors['empty_password']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['empty_username']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['invalid_username']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['incorrect_password']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else{
    wp_redirect(get_bloginfo('url').'/log-in');
}
exit;
}

Funziona benissimo per errori di accesso sul mio sito web. Ma ora il reindirizzamento di accesso ti porta a http://netballscoop.com/members/testing (l'utente 'Testing' è preso per la pagina del profilo del suo membro BuddyPress).

Come reindirizzare l'utente alla pagina precedente quando accede?


La mia risposta precedentemente pubblicata ha letto male la tua domanda, quindi l'ho eliminata, hai già provato a partecipare all'azione wp_login ? È uno degli ultimi licenziati quando si accede correttamente. L'ho usato su un sito che ho recentemente creato usando BuddyPress e ha funzionato come un fascino.
Eric Allen,

Ciao @allenericr, a dire il vero non saprei da dove cominciare. La mia conoscenza di php / funzioni / ecc. È molto limitata. Saresti in grado di pubblicare ciò che stai utilizzando per quel sito se ritieni che sia un'alternativa migliore?
Tanya,

Risposte:


8

È possibile filtrare la login_redirectfunzione in questo modo, adattarsi in base alle proprie esigenze.

add_filter('login_redirect', 'redirect_previous_page', 10, 1);

function redirect_previous_page( $redirect_to ){
    global $user;

    $request = $_SERVER["HTTP_REFERER"];

    if ( in_array( $user->roles[0], array( 'administrator') ) ) {

        return admin_url();

    } elseif ( in_array( $user->roles[0], array( 'subscriber') ) ) {

        return $request;
    } 

    return $redirect_to;
}

Aggiornamento 1:

Il codice (sopra) è stato modificato sopra e testato - funziona.

Aggiornamento 2: (di Tanya)

Ho chattato con @userabuser e ho trovato questa risposta che funziona.

// Redirect to previous page 
remove_all_filters('login_redirect', 99);
add_filter('bbp_user_login_redirect_to', 'function_name');

Nota importante:

Si scopre che Tanya stava usando il plug-in del forum bbPress, quindi nonostante lo snippet originale che utilizza,

add_filter('login_redirect', 'function_name'); //the standard WordPress API filter

che è corretto e funziona in condizioni "normali" di WordPress, in questo caso è stato sovrascritto in modo prioritario dal filtro bbPress,

add_filter('bbp_user_login_redirect_to', 'function_name'); //the bbPress API filter

Ora, poiché la documentazione sul sito Web bbPress.org che descrive queste azioni e questi hook è scarsamente organizzata e un po 'incompleta (per quanto posso dire), suggerisco che (chiunque) cerchi ulteriori informazioni su quali hook dove e cosa filtra cosa , dovrebbero prendere uno sguardo a questa risorsa qui che fornisce un elenco dettagliato di hook e filtri.

Note: (varie)

Modifica 'subscriber'in modo che corrisponda al ruolo che stai utilizzando per quel tipo di utente. Può anche accettare più ruoli poiché è sotto forma di un array.

in_array( $user->roles[0], array( 'subscriber', 'role2, role3', 'etc')

@Tanya Codice modificato per includere i parametri opzionali. $ user potrebbe non essere accessibile. Prova questo aggiornamento e fammi sapere.
Adam,

@Tanya Ciao Tanya, grazie per l'aggiornamento. Nel frattempo, puoi eliminare i tuoi ultimi commenti (fai clic sulla piccola x al passaggio del mouse) in modo da poter ripulire il thread dei commenti. Rimuoverò anche i miei commenti irrilevanti.
Adam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.