Prevenirea accesului utilizatorilor la profilul WordPress după autentificare

8 sept. 2012, 20:41:46
Vizualizări: 18.9K
Voturi: 0

Am creat un rol personalizat pentru site-ul meu și utilizatorii pot accesa doar pagina lor de profil, care pare să fie minimul necesar pentru WordPress. Totuși, conturile sunt gestionate de noi și acesta este un site privat, nu dorim ca utilizatorii să poată modifica numele de utilizator, emailul sau parola folosind WordPress.

Singura problemă pe care o avem în prezent este legată de procesul de autentificare. Toate paginile interne necesită autentificare. Avem o pagină de destinație cu un link către pagina de login, pentru acest link aplicăm redirect_to=/blog/ și după autentificare ești redirecționat către blog. Acest lucru funcționează suficient de bine pentru noi.

Totuși, dacă un utilizator accesează un link către o pagină internă (sau primește linkul automat prin email, din setările de abonare), acest link îl va forța să se autentifice, ducându-l la pagina de login fără parametrul redirect_to. Aceasta înseamnă că va ajunge direct la pagina de profil.

De ce este redirecționat către pagina de profil în locul paginii solicitate rămâne un mister pentru mine, dar trebuie să-l redirecționăm înapoi către blog.

Am creat următoarea funcție cu intenția ca după autentificare, utilizatorul să fie redirecționat către blog. În acest moment nu ne pasă dacă un permalink nu funcționează la prima vizită (desigur că vor funcționa după autentificare).

Dar această funcție nu funcționează. wp_signon nu este declanșat după ce un utilizator se autentifică, ci este folosit pentru autentificarea unui utilizator.

Ce ar trebui să fac?

// Funcție pentru redirecționarea după login
function login_redirect() {
    wp_redirect( get_bloginfo( 'url' ) . '/blog/' );
}
// Adăugarea acțiunii - folosește hook-ul corect pentru redirecționare după login
add_action('wp_login', 'login_redirect');`
0
Toate răspunsurile la întrebare 2
0

Există două soluții posibile pentru problema ta.

  1. Poți descărca plugin-ul "Login redirect" de aici: http://wordpress.org/extend/plugins/peters-login-redirect/

  2. Ar trebui să utilizezi un filtru 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);

Mai multe informații despre filtrul login_redirect: http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

8 sept. 2012 21:31:23
3
-1

Fiecare dintre soluțiile de mai sus pare să redirecționeze utilizatorul către o anumită URL prestabilită.

Pentru a redirecționa utilizatorul către pagina pe care încerca inițial să o acceseze, cred că poate fi realizat doar prin (uff) editarea fișierului wp-login.php și schimbarea

$redirect_to = admin_url();

în

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

Totul va fi pierdut când actualizați instalarea WordPress...

RRikesh RRikesh
15 mar. 2013 08:06:56

pur și simplu faceți acest lucru în tema copil.

user2060451 user2060451
17 aug. 2016 10:37:43

Nu ar trebui să editați niciodată fișierele de bază ale WordPress.

Tom Tom
18 apr. 2018 08:18:00