Verificarea dacă un utilizator este autentificat și redirecționarea către o altă pagină

24 iul. 2011, 19:12:56
Vizualizări: 20K
Voturi: 0

Creez un site exclusiv pentru membri care necesită ca utilizatorii să fie autentificați pentru a folosi site-ul.

Pagina principală este vizibilă public. Pe pagina principală, aș dori să pun o funcție care să redirecționeze utilizatorii către o pagină din interiorul site-ului dacă sunt autentificați.

Codul pe care l-am încercat

<?php if (is_user_logged_in() ) {
 wp_redirect ('dashboard' );
 exit;
 }
?>

Îmi dă eroarea "headers already sent". Codul este plasat în partea de sus a fișierului meu PHP.

Ce fac greșit?

3
Comentarii

Spune unde sunt trimise headerele?

Bainternet Bainternet
24 iul. 2011 19:27:00

/wp-includes/pluggable.php la linia 934

javy javy
24 iul. 2011 19:38:59

încearcă să activezi wp_debug și vezi ce se întâmplă acolo

Bainternet Bainternet
24 iul. 2011 20:57:04
Toate răspunsurile la întrebare 2
4

Nu sunt sigur dacă ai simplificat doar ca exemplu, dar asigură-te că folosești URL-ul complet în apelul wp_redirect().

De asemenea, în loc să-l ai în template, cred că ar fi mai potrivit să rulezi acest cod la hook-ul template_redirect.

24 iul. 2011 20:02:16
Comentarii

Soluția mea este wp_redirect ( home_url("/dashboard") );, și am pus acest cod pe linia 1 a șablonului. Deși nu sunt familiarizat cu hook-uri, deci probabil ai un punct valid. De ce?

javy javy
24 iul. 2011 21:36:07

@javy template_redirect este locul semantic în cod precum "WP știe ce are nevoie să înceapă să încarce și să afișeze, dar tu poți să-i schimbi decizia". Începutul șablonului înseamnă "deja încărcăm acest lucru". Dacă nu vrei ce este în șablon, nu există niciun motiv să ajungi atât de departe în proces.

Rarst Rarst
24 iul. 2011 21:53:19

Are sens, sună ca și cum ar economisi resurse ale serverului?

javy javy
25 iul. 2011 03:14:52

@javy Nu cred că diferența de performanță ar fi semnificativă între cele două.

Rarst Rarst
25 iul. 2011 10:28:10
0
<?php if (is_user_logged_in() ) {
wp_redirect ( home_url("/dashboard") );
exit;
}
?>

Este ceea ce am creat și funcționează. De asemenea, cred că am greșit prin plasarea acestui cod mai jos:

<?php
/*Template Name: Pagina Principală*/
?>

Noul cod este pe linia 1 și funcționează.

25 iul. 2011 03:13:41