Află dacă utilizatorul autentificat nu este abonat
Există un tag condițional care îmi va permite să afișez anumit conținut doar dacă utilizatorul NU este abonat?

O metodă chiar mai simplă decât cea arătată de @Brady este utilizarea funcției current_user_can
:
if ( current_user_can( 'subscriber' ) )
echo "Bună, dragă abonat! Mă bucur să te revăd!";
MU
Există și un echivalent pentru instalările MU, numit current_user_can_for_blog
:
global $blog_id;
if ( current_user_can_for_blog( $blog_id, 'subscriber' ) )
echo "Bună, dragă abonat! Mă bucur să te revăd pe acest blog!";
În culise
Dacă analizăm sursa funcțiilor pentru single sau instalări MU, vom vedea că ambele se bazează pe wp_get_current_user()
și apoi verifică dacă utilizatorul are capacitatea (has_cap
).
Dacă doriți să vedeți de unde provine capacitatea, atunci intra în joc clasa/obiectul WP_User
.
Alți membri ai acestui set
Există și funcția author_can( $GLOBALS['post'], 'capability' );
. Toate aceste funcții se găsesc în ~/wp-includes/capabilities
, una sub alta.
Când să folosiți ce?
Care este diferența dintre current_user_can(_FOR_BLOG)
și user_can
?
user_can()
este mai nouă (din versiunea 3.1), dar necesită obiectul utilizator. Deci o puteți folosi în cazurile în care nu vreți să vă adresați utilizatorului curent, ci unor utilizatori specifici.current_user_can_*()
este evident.author_can()
vă permite să verificați capacitățile în raport cu un obiect post. Acest obiect este disponibil doar pentru postările care sunt deja în baza de date. Deci este în principal pentru a permite/refuza accesul la anumite funcții ale postării.

Consider că acest lucru trebuie actualizat, deoarece:
Nu transmiteți un nume de rol către current_user_can(), deoarece acest lucru nu este garantat să funcționeze corect (vezi #22624).
din pagina Codex a current_user_can()
, din câte știu, nu s-a schimbat.

@ialocin Poți actualiza asta dacă dorești (are peste 2 ani). În principiu, ai dreptate. Pe de altă parte, un rol este adăugat și ca capabilitate ;)

Este ceea ce te referi?
global $userdata;
get_currentuserinfo();
if ( $userdata->user_level != 0 )//verifică nivelul utilizatorului după ID-ul nivelului
{
echo 'Utilizatorul nu este un Abonat';
}
else
{
echo 'Utilizatorul este un Abonat';
}
Mai multe detalii despre ID-urile pentru diferite niveluri: http://codex.wordpress.org/Roles_and_Capabilities#User_Levels
Există și funcția current_user_can(), care îți permite să specifici capabilități specifice pentru mai multă flexibilitate. http://codex.wordpress.org/Function_Reference/current_user_can

Nu utilizați niveluri de utilizator... Iată ce spune codex despre ele: Pentru a menține compatibilitatea cu versiunile anterioare ale plugin-urilor care încă folosesc sistemul de niveluri de utilizator (deși acest lucru este foarte dezaprobat), Rolurile implicite în WordPress includ și Capabilități care corespund acestor niveluri. Nivelurile de utilizator au fost în cele din urmă depreciate în versiunea 3.0.
