Doriți să redirecționați utilizatorii înapoi la pagina pe care o vizualizau după autentificare? Deși probabil există un plugin pentru asta, am creat o scurtă secțiune de cod pe care o puteți folosi pentru a redirecționa WordPress înapoi la pagina de referință după autentificare.
Instrucțiuni:
Tot ce trebuie să faceți este să adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:
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();
}
}
Notă: Dacă este prima dată când adăugați secvențe de cod în WordPress, consultați ghidul nostru despre cum să copiați / lipiți corect secvențe de cod în WordPress, pentru a nu vă defecta accidental site-ul.
Dacă ți-a plăcut acest fragment de cod, te rugăm să iei în considerare și alte articole de pe site, cum ar fi: cele mai bune 62 de teme gratuite pentru bloguri WordPress și cum să creezi un formular de contact în WordPress.
Mulțumesc pentru articolul dvs.
Ați putea oferi secțiunea de cod completă pentru aceeași acțiune cu WooCommerce, deoarece am încercat să adaug diferite bucăți de cod, dar mi-e teamă că am făcut niște erori. Rezultatul a eșuat.
Vă mulțumesc foarte mult în avans.
Și există același cod pentru procesul de deconectare?
Vreau ca orice utilizator care se autentifică de pe o pagină, să spunem https://example.com/asset/*, să fie redirecționat înapoi la acea pagină după autentificare. Ce trebuie să fac pentru a face acest lucru să funcționeze?
Doriți să redirecționați doar pe https://example.com/asset/*?
Secțiunea de cod de mai sus ar trebui să redirecționeze URL-urile paginilor în general.
Bună, codul funcționează bine cu pluginul Ultimate Member?
Bună,
Nu reușesc să-l fac să funcționeze.
Folosesc:
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();
}
}
pentru a folosi pagina de autentificare Woocommerce în locul wp-login.php (site-ul meu este un magazin online). Și funcționează.
Încerc să returnez utilizatorul pe postarea de blog/pagina produsului unic vizualizată înainte de autentificare folosind filtrul listat aici ( add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’); ), dar nu funcționează.
Presupun că filtrul și acțiunea mea nu pot funcționa împreună. Cred că pagina de autentificare Woocommerce elimină partea de redirecționare din URL.
Cum pot realiza redirecționarea către pagina anterioară după autentificare în pagina mea de cont?
Vă mulțumesc anticipat!
Din păcate, ar putea exista un număr de cauze. Ați putea încerca o prioritate diferită pentru filtru.
WOW!! acela a funcționat perfect pentru mine. mulțumesc
Mă bucur că a ajutat, Vinoth
Cum trebuie să modific acest cod pentru a redirecționa utilizatorii după o înregistrare?
Hei Ole, sper că această secțiune de cod te poate ajuta: https://www.isitwp.com/redirect-a-successful-registration-page/
Dacă aveți întrebări suplimentare, nu ezitați să ne contactați.
Bună ziua, domnule
Folosesc propriul meu cod pentru înregistrare și autentificare. Cum să folosesc acolo codul menționat mai sus. Vă rog să mă ajutați.
vreau să fac asta invers
vreau să afișez produsul înainte de descărcare sau achiziție, vreau să fac autentificarea în easy digital download
Nu sunt sigur, înțeleg pe deplin ce căutați. Puteți oferi mai multe detalii?
Vreau să afișez mai întâi butonul de autentificare pentru descărcare și dacă utilizatorul se înregistrează și se autentifică, atunci site-ul ar trebui să afișeze prețurile și dacă se face clic, ar trebui să meargă la descărcare, așa cum se arată în imagine
https://snag.gy/rTRloi.jpg
Acest lucru nu funcționează pentru mine folosind WP 4.1.1 cu tema FULLBY și pluginul Simple WordPress Membership
Salut, asta nu a schimbat nimic pentru mine. Aveți sugestii? Caut această soluție de ceva timp.
când te autentifici pentru a testa acest script, pe ce pagină te afli? ești pe pagina wp-login.php sau pe altă pagină.
Da, pe pagina wp-login.php.
Acesta ar fi motivul, ideea din spatele acestui fragment este că dacă ai un formular de autentificare în bara laterală sau în altă parte, de exemplu. Aș citi postarea, apoi aș introduce detaliile mele pentru a mă autentifica, aș fi apoi autentificat și redirecționat înapoi la pagina de unde m-am autentificat.
Ok, mulțumesc. Deci, folosesc doar widgetul standard WP Meta Login. Când ești într-o postare înainte de a comenta, trebuie să te autentifici. În bara laterală se află widgetul Meta/Login care te duce la pagina wp-login.php când dai clic pe „Log In.” Odată autentificat pe pagina wp-login.php, returnează vizitatorul pe Pagina principală întotdeauna, spre deosebire de postarea pe care o vizualiza înainte. Vă rugăm să-mi spuneți dacă codul dvs. va funcționa cumva pentru asta. Mulțumesc!
Salut Karena,
trimite-mi un mesaj prin formularul de contact, va fi mai ușor. Comentariile pot deveni cam lungi.
Și eu am mare nevoie de asta. Pagina mea de știri restricționează conținutul doar pentru abonați. Când un abonat încarcă un articol, mesajul de eroare este afișat, dar ei se pot autentifica întotdeauna folosind formularul widgetului din bara laterală. Problema mea este că atunci când se autentifică cu succes, nu sunt redirecționați către ultimul articol la care se aflau.
Știe cineva cum să fac asta pentru o autentificare woo-commerce?
Încearcă asta,
add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’);
function wc_login_redirect( $redirect_to ) {
$redirect_to = ‘http://mysite.com/shop’;
return $redirect_to;
}
Dar să te redirecționeze înapoi la pagina de referință, nu la o pagină statică?
ar trebui să poți folosi codul din eșantionul de mai sus, dar aș verifica mai întâi să mă asigur că acel cod de autentificare funcționează, apoi doar înlocuiește
$redirect_to = ‘http://wpsnipp.com’;
return $redirect_to;
cu
$location = $_SERVER[‘HTTP_REFERER’];
wp_safe_redirect($location);
exit();
Care este utilitatea lui $redirect_to după înlocuire. Codul nu funcționează pentru mine 🙁
Salut Aayush, asta ar trebui să funcționeze fără probleme, când un utilizator se autentifică în woo commerce va fi redirecționat în acest caz către wpsnipp.com. Plasează acest cod în functions.php al temei tale wordpress, asigură-te și că ai instalat woo commerce, altfel acesta nu va funcționa.
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$redirect_to = ‘http://wpsnipp.com’;
return $redirect_to;
}
Salut Kevin,
Am încercat acest cod și funcționează:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$redirect_to = ‘http://wpsnipp.com’;
return $redirect_to;
}
Dar acesta nu a funcționat:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$location = $_SERVER[‘HTTP_REFERER’];
wp_safe_redirect($location);
exit();
}
Aș aprecia dacă m-ați putea ajuta,
Cu stimă
Aș presupune că HTTP_REFERER este gol.
http://php.net/manual/en/reserved.variables.server.php
Adresa paginii (dacă există) care a direcționat agentul utilizatorului către pagina curentă. Aceasta este setată de agentul utilizatorului. Nu toți agenții utilizator vor seta acest lucru, iar unii oferă posibilitatea de a modifica HTTP_REFERER ca o funcționalitate.
Mulțumesc. A funcționat pentru mine
A avut cineva succes cu acest cod integrat cu site-uri S2Member? Modul în care pluginul S2Member gestionează redirecționarea post-login poate suprascrie codul sugerat.
Pentru siguranță, pe lângă crearea unui plugin de funcționalitate, am actualizat fișierul functions.php în sine în tema părinte, precum și functions.php din tema copil pe care site-ul meu îl folosește de fapt. M-am asigurat că variabila post ID era actualizată pentru cea pe care o folosește pagina de login Wordpress („user_login”), spre deosebire de „login_location”.
Aștept cu nerăbdare să aud despre orice experiență cu redirecționarea cu succes pe site-uri care au pluginul S2Member instalat și activat.
Salutări,
Darren
Salut Darren,
s2 are câteva funcții încorporate pentru redirecționarea la login, de exemplu:
add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2);
function s2_redirect($redirect, $vars = array()){
// bla bla bla cod……
return $redirect;
}
Nu am testat acest lucru, dar ceva de genul acesta ar putea funcționa pentru tine.
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;
}
}
Acest lucru nu funcționează pentru mine. Incompatibil cu 3.8.1?
Acest lucru nu funcționează pentru mine. Incompatibil cu 3.8.1?
Acest lucru nu funcționează pentru mine. Incompatibil cu 3.8.1?
Nu ar fi logic mai corect să folosiți pur și simplu
add_filter(‘login_redirect’, ‘my_login_redirect’, 10, 3);
Și apoi să mutați instrucțiunea if în funcția însăși?
Pe ce pagină aș pune asta? Vorbim despre o pagină cu un link către pagina de login, pagina de login și pagina redirecționată?
Puneți acest lucru în functions.php și îi va redirecționa către pagina pe care o vizualizau după ce se loghează.
SUPER! Chiar mai bine decât credeam că ar putea fi…
Excelent! Mulțumesc
Cool, mă bucur că îți place fragmentul.
Frumos!
Da, sunt de acord Justin! – Tyler a scris asta după ce a avut nevoie de el pentru muncă, sunt sigur că voi folosi și eu acest lucru pentru un proiect în curând.