Află dacă utilizatorul autentificat nu este abonat

31 iul. 2012, 10:32:05
Vizualizări: 24.2K
Voturi: 14

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

0
Toate răspunsurile la întrebare 3
3
19

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.
31 iul. 2012 13:17:02
Comentarii

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.

Nicolai Grossherr Nicolai Grossherr
5 aug. 2014 00:59:20

@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 ;)

kaiser kaiser
5 aug. 2014 02:47:52

Cred că ar fi suficient doar o observație/actualizare, în afară de asta, sunt și eu leneș... ;)

Nicolai Grossherr Nicolai Grossherr
5 aug. 2014 11:41:48
0
12
<?php
$current_user = wp_get_current_user();
if ( ! user_can( $current_user, "subscriber" ) ) // Verifică dacă utilizatorul nu are rolul de subscriber
    echo 'Utilizatorul nu este un Subscriber';
else
    echo 'Utilizatorul este un Subscriber';
?>
31 iul. 2012 11:45:09
1
-3

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

31 iul. 2012 11:34:27
Comentarii

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.

Scott Scott
31 iul. 2012 11:36:28