Impedire agli utenti di accedere al profilo WordPress dopo il login

8 set 2012, 20:41:46
Visualizzazioni: 18.9K
Voti: 0

Ho creato un ruolo personalizzato per il mio sito e gli utenti possono accedere solo alla pagina del loro profilo, che sembra essere il minimo richiesto da WordPress. Tuttavia, gli account sono gestiti da noi e questo è un sito privato, non vogliamo che gli utenti possano modificare il loro username, email o password utilizzando WordPress.

L'unico problema che abbiamo al momento riguarda il login. Le pagine interne richiedono tutti di essere loggati. Abbiamo una landing page con un link alla pagina di login, per questo link applichiamo redirect_to=/blog/ e dopo il login si viene reindirizzati al blog. Questo funziona abbastanza bene per noi.

Tuttavia, se un utente accede a una pagina interna (o riceve il link via email automaticamente, dalle impostazioni di abbonamento) allora il link richiederà il login, portandoli alla schermata di login senza il parametro redirect_to. Questo significa che verranno reindirizzati direttamente alla pagina del profilo.

Perché vengano reindirizzati alla pagina del profilo invece che alla pagina richiesta è un mistero per me, ma dobbiamo reindirizzarli nuovamente al blog.

Ecco una funzione che ho creato con l'intenzione che dopo il login, l'utente venga portato al blog. A questo punto non ci interessa se un permalink non funziona al primo accesso (ovviamente funzioneranno una volta loggati).

Ma questa funzione non funziona. wp_signon non viene attivato dopo che un utente fa login, ma viene invece utilizzato per fare il login di un utente.

Cosa dovrei fare?

function login_redirect() {
    wp_redirect( get_bloginfo( 'url' ) . '/blog/' );
}
add_action('wp_signon', 'login_redirect');`
0
Tutte le risposte alla domanda 2
0

Ci sono due possibili soluzioni per il tuo problema.

  1. Puoi scaricare il plugin "Login redirect" da qui: http://wordpress.org/extend/plugins/peters-login-redirect/

  2. Dovresti utilizzare un filtro login_redirect:

function my_login_redirect($redirect_to, $request) {
$redirect_url = get_bloginfo( 'url' ) . '/blog/';

return $redirect_url;
}
add_filter("login_redirect", "my_login_redirect", 10, 3);

Maggiori informazioni sul filtro login_redirect: http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

8 set 2012 21:31:23
3
-1

Ognuna delle soluzioni sopra indicate sembra reindirizzare l'utente a un URL predefinito specifico.

Per reindirizzare l'utente alla pagina che stava originariamente tentando di accedere, penso che si possa ottenere solo modificando (erk) wp-login.php e cambiando

$redirect_to = admin_url();

in

$redirect_to = $_SERVER[HTTP_REFERER];
15 mar 2013 03:16:54
Commenti

Tutto andrà perso quando aggiornerai la tua installazione di WordPress...

RRikesh RRikesh
15 mar 2013 08:06:56

fallo semplicemente nel child theme.

user2060451 user2060451
17 ago 2016 10:37:43

Non dovresti mai modificare i file core di WP.

Tom Tom
18 apr 2018 08:18:00