Vuoi reindirizzare gli utenti alla pagina che stavano visualizzando dopo il login? Sebbene esista probabilmente un plugin per questo, abbiamo creato un rapido snippet di codice che puoi utilizzare per reindirizzare WordPress alla pagina di riferimento dopo il login.
Istruzioni:
Tutto quello che devi fare è aggiungere questo codice al file functions.php del tuo tema o in un plugin specifico per il sito:
if ( (isset($_GET['action']) && $_GET['action'] != 'logout') || (isset($_POST['login_location']) && !empty($_POST['login_location'])) ) {
add_filter('login_redirect', 'my_login_redirect', 10, 3);
function my_login_redirect() {
$location = $_SERVER['HTTP_REFERER'];
wp_safe_redirect($location);
exit();
}
}
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come copiare / incollare correttamente snippet di codice in WordPress, in modo da non rompere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la possibilità di consultare i nostri altri articoli sul sito come: 62 migliori temi gratuiti per blog di WordPress e come creare un modulo di contatto in WordPress.
Grazie per il tuo articolo.
Potresti fornire lo snippet di codice completo per la stessa azione con WooCommerce perché ho provato ad aggiungere diversi pezzi di codice ma temo di aver commesso degli errori. Il risultato è fallito.
Grazie mille in anticipo.
E c'è lo stesso codice per il processo di logout?
Voglio che qualsiasi utente che effettua il login da una pagina come https://example.com/asset/* venga reindirizzato a quella pagina dopo il login. Cosa devo fare per far funzionare questo?
Vuoi reindirizzare solo su https://example.com/asset/*?
Lo snippet sopra dovrebbe reindirizzare gli URL delle pagine in generale.
Ciao, il codice funziona bene con il plugin Ultimate Member?
Ciao,
Non riesco a farlo funzionare.
Uso questo:
add_action(‘init’,’custom_login’);
function custom_login(){
global $pagenow;
$substitute_login_page = str_replace(‘wp-login.php’,’my-account’, $pagenow);
if( ‘wp-login.php’ == $pagenow && $_GET[‘action’]!=”logout” && $_GET[‘action’]!=”lostpassword”) {
wp_redirect($substitute_login_page);
exit();
}
}
per usare la pagina di login di Woocommerce invece di wp-login.php (il mio sito web è un negozio online). E funziona.
Cerco di restituire l'utente alla pagina del post/prodotto singolo visualizzata prima del login utilizzando il filtro elencato qui ( add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’); ), ma non funziona.
Suppongo che il filtro e la mia azione non possano funzionare insieme. Penso che la pagina di login di Woocommerce elimini la parte di reindirizzamento dall'URL.
Come posso ottenere il reindirizzamento alla pagina precedente dopo il login nella pagina my-account?
Grazie in anticipo!
Purtroppo ci potrebbero essere diverse cause. Potresti provare una priorità diversa per il filtro.
WOW!! quello ha funzionato perfettamente per me. grazie
Sono contento che sia stato utile, Vinoth
Come devo modificare questo codice per reindirizzare gli utenti dopo la registrazione?
Ciao Ole, spero che questo snippet ti possa essere d'aiuto: https://www.isitwp.com/redirect-a-successful-registration-page/
Se hai ulteriori domande, non esitare a contattarci.
Salve signore,
Sto usando il mio codice per la registrazione e il login. Come posso usare il codice menzionato sopra? Per favore aiutami
voglio fare in quest'altro modo
voglio mostrare il prodotto prima del download o dell'acquisto, voglio semplificare il login in easy digital download
Non sono sicuro di capire esattamente cosa stai cercando. Potresti fornire maggiori dettagli?
Voglio mostrare prima il pulsante "login per scaricare" e se l'utente si registra ed effettua il login, il sito dovrebbe mostrare i prezzi e se cliccato dovrebbe andare al download come mostrato nell'immagine
https://snag.gy/rTRloi.jpg
Questo non funziona per me usando WP 4.1.1 con il tema FULLBY e il plugin Simple WordPress Membership
Ciao, questo non ha cambiato nulla per me. Suggerimenti? Sto cercando questa soluzione da un po'.
Quando accedi per testare questo script, su quale pagina ti trovi? Sei sulla pagina wp-login.php o su un'altra pagina.
Sì, sulla pagina wp-login.php.
Questo sarebbe il motivo, l'idea alla base di questo snippet è che se hai un modulo di accesso nella barra laterale o in un altro punto, ad esempio. Starei leggendo il post, poi inserirei i miei dati per accedere, poi accederei e verrei reindirizzato alla pagina da cui ho effettuato l'accesso.
Ok, grazie. Quindi, sto solo usando il widget standard WP Meta Login. Quando si è in un post prima di commentare, è necessario accedere. Nella barra laterale si trova il widget Meta/Login che porta alla pagina wp-login.php quando si fa clic su ‘Accedi’. Una volta effettuato l'accesso alla pagina wp-login.php, questa restituisce il visitatore all'Homepage sempre, anziché al post che stava visualizzando in precedenza. Per favore, fammi sapere se il tuo codice funzionerà in qualche modo per questo. Grazie!
Ciao Karena,
inviami un messaggio tramite il modulo di contatto, sarà più facile. I commenti possono diventare un po' lunghi.
Ho davvero bisogno di questo. La mia pagina di notizie limita i contenuti solo agli abbonati. Quando un abbonato carica un articolo, viene visualizzato il messaggio di errore, ma può sempre accedere utilizzando il modulo del widget nella barra laterale. Il mio problema è che quando accedono con successo non vengono reindirizzati all'ultimo articolo in cui si trovano.
Qualcuno sa come fare questo per un accesso woo-commerce?
Prova questo,
add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’);
function wc_login_redirect( $redirect_to ) {
$redirect_to = ‘http://mysite.com/shop’;
return $redirect_to;
}
Ma per reindirizzare alla pagina di riferimento, non a una pagina statica?
dovrebbe essere in grado di utilizzare il codice nell'esempio sopra, ma prima controllerei per assicurarmi che il codice di accesso funzioni, quindi sostituirei semplicemente
$redirect_to = ‘http://wpsnipp.com’;
return $redirect_to;
con
$location = $_SERVER[‘HTTP_REFERER’];
wp_safe_redirect($location);
exit();
Qual è l'utilità di $redirect_to dopo la sostituzione. Il codice non funziona per me 🙁
Ciao Aayush, questo dovrebbe funzionare senza problemi, quando un utente accede a woo commerce verrà reindirizzato in questo caso a wpsnipp.com. Inserisci questo nel functions.php del tuo tema WordPress, assicurati anche che tu abbia woo commerce installato altrimenti questo non funzionerà.
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$redirect_to = ‘http://wpsnipp.com’;
return $redirect_to;
}
Ciao Kevin,
Ho provato questo codice e funziona:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$redirect_to = ‘http://wpsnipp.com’;
return $redirect_to;
}
Ma questo non ha funzionato:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$location = $_SERVER[‘HTTP_REFERER’];
wp_safe_redirect($location);
exit();
}
Apprezzerei se potessi aiutarmi,
Saluti
Supporrei che HTTP_REFERER sia vuoto.
http://php.net/manual/en/reserved.variables.server.php
L'indirizzo della pagina (se presente) che ha indirizzato l'user agent alla pagina corrente. Viene impostato dall'user agent. Non tutti gli user agent lo impostano e alcuni forniscono la possibilità di modificare HTTP_REFERER come funzionalità.
Grazie. Ha funzionato per me
Qualcuno ha avuto successo con questo codice integrato con siti web S2Member? Il modo in cui il plugin S2Member gestisce il reindirizzamento post-login potrebbe sovrascrivere il codice suggerito.
Per sicurezza, oltre a creare un plugin di funzionalità, ho aggiornato il file functions.php stesso all'interno del mio tema padre, così come il functions.php all'interno del tema figlio che il mio sito utilizza effettivamente. Mi sono assicurato che l'ID della variabile post venisse aggiornato per quello che la pagina di login di Wordpress utilizza effettivamente ("user_login"), invece di "login_location".
Attendo con ansia di sentire qualsiasi esperienza con il reindirizzamento riuscito con siti che hanno il plugin S2Member installato e attivato.
Saluti,
Darren
Ciao Darren,
s2 ha alcune funzioni integrate per il reindirizzamento del login, ad esempio:
add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2);
function s2_redirect($redirect, $vars = array()){
// bla bla bla codice……
return $redirect;
}
Non l'ho testato ma qualcosa del genere potrebbe funzionare per te.
if ( (isset($_GET[‘action’]) && $_GET[‘action’] != ‘logout’) || (isset($_POST[‘login_location’]) && !empty($_POST[‘login_location’])) ) {
add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2);
function s2_redirect($redirect, $vars = array()){
$redirect = $_SERVER[‘HTTP_REFERER’];
return $redirect;
}
}
Questo non funziona per me. Incompatibile con 3.8.1?
Questo non funziona per me. Incompatibile con 3.8.1?
Questo non funziona per me. Incompatibile con 3.8.1?
Non sarebbe logicamente più corretto usare semplicemente
add_filter(‘login_redirect’, ‘my_login_redirect’, 10, 3);
E poi spostare l'istruzione if all'interno della funzione stessa?
Su quale pagina dovrei metterlo? Stiamo parlando di una pagina con un link alla pagina di login, la pagina di login e la pagina reindirizzata?
Inserisci questo nel file functions.php e li reindirizzerà alla pagina che stavano visualizzando dopo l'accesso.
FANTASTICO! Ancora meglio di quanto pensassi fosse possibile…
Ottimo! Grazie
Fantastico, sono contento che ti piaccia lo snippet.
Bello!
Sì, sono d'accordo Justin! – Tyler ha scritto questo dopo averne avuto bisogno per lavoro, sono sicuro che lo userò presto per un progetto.