Cum verificăm dacă utilizatorul este în interfața de administrare?
În aplicația mea, am un formular. Vreau să afișez titlul doar dacă utilizatorul este în frontend (partea publică), dar dacă este în backend (interfața de administrare) nu vreau să îl afișez.
Nu vreau să fac această verificare pe baza rolului utilizatorului.
Folosește is_admin(). Această funcție verifică dacă te afli pe o pagină de Administrare, adică în backend.
Cum rămâne cu încărcarea unui script pe o anumită pagină de administrare?
AlxVallejo
Filtrul de acțiune admin_print_scripts este menit să facă asta.
Rutwick Gangurde
De remarcat, o cerere ajax va face ca aceasta să returneze TRUE.
De asemenea, chiar în documentație se spune că aceasta nu este menită să fie folosită ca o verificare de securitate.
Rebecca Dessonville
Acest lucru nu se mai aplică WordPress din momentul Gutenberg. Acum, toate ecranele care folosesc Gutenberg vor returna false atunci când se verifică pentru is_admin. La fel și în Customizer. Și la fel și pentru apelurile AJAX. is_admin este o funcție înșelătoare și abuzată. Nu o poți folosi pentru a verifica în siguranță dacă te afli într-un ecran de administrare.
De asemenea, nu o poți folosi pentru a verifica dacă te afli în front-end, deoarece în timpul unui apel AJAX această funcție ar returna true, deoarece funcția face prin definiție Determină dacă cererea curentă este pentru o pagină de interfață administrativă.
Asta este adevărat într-un apel ajax.
User
Folosește is_admin() pentru a verifica dacă pagina curentă este o pagină de administrare. În ciuda numelui, aceasta nu este o verificare a rolului utilizatorului. Întotdeauna returnează FALSE pe front-end, indiferent de rolul utilizatorului.
Fals de când editorul de blocuri prost făcut a fost băgat pe gât comunității WP: https://core.trac.wordpress.org/ticket/47394 De atunci, nu mai poți determina în siguranță dacă te afli în admin sau pe front end.
User
@Motivated nu există. Acum trebuie să faci o GRĂMADĂ de verificări, cum ar fi dacă e în timpul unui eveniment AJAX, dacă e o anumită pagină, dacă e ceva legat de editarea de blocuri, dacă utilizatorul este autentificat, dacă are anumite drepturi... etc. Nu a fost niciodată diferit în ceea ce privește securitatea deoarece is_admin NU verifică dacă utilizatorul este admin sau nu, dar măcar puteai să-ți dai seama în general dacă era vorba de zona de admin (cu excepția cererilor AJAX, unde întotdeauna este is_admin). Gluma e că editorii de blocuri îți spun is_admin FALSE, pentru că nu rulează "în backend" ci prin REST.
User