Care este semnificația câmpului wp_capabilities din tabelul wp_usermeta

19 iun. 2013, 16:07:14
Vizualizări: 35.9K
Voturi: 11

Sunt nou în WordPress și am observat că în tabelul wp_usermeta avem un rând

meta_key                meta_value
wp_capabilities       a:1:{s:13:"administrator";b:1;}

În primul rând, care este semnificația valorii meta a:1:{s:13:"administrator";b:1;}, unde pot găsi explicația exactă a acestui câmp? Sau vreau să știu totul despre roluri, utilizatori și Capacități, de unde pot obține aceste informații.

În al doilea rând, cum pot crea roluri noi prin API-ul WordPress prin cod

Mulțumesc anticipat.

0
Toate răspunsurile la întrebare 5
1
10

wp_capabilities salvează valoarea ca un array serializat, poți încerca în PHP sau pentru acest exemplu aici: http://blog.tanist.co.uk/files/unserialize/.

Codul:

a:1:{s:13:"administrator";b:1;}

Reprezintă:

Array
(
   [administrator] => 1
)

Ceea ce înseamnă că utilizatorul este administrator.

Poți adăuga noi roluri în baza de date rulând funcția add_role, dar asigură-te că o rulezi doar o singură dată!

19 iun. 2013 16:31:55
Comentarii

Pentru a fi clar, poți deserializa array-ul folosind funcția PHP unserialize, iar rezultatul în acest caz este array('administrator' => true) în format var_export.

Flimm Flimm
18 oct. 2017 14:27:36
0

Pe lângă răspunsul lui @Krysiek, ar trebui să știi că datele stocate în tabelele meta, inclusiv metadatele utilizatorilor, sunt adesea serializate. Dacă dorești să afli ce reprezintă de fapt aceste date, poți folosi funcția PHP unserialize pentru a determina valoarea lor. De exemplu, rulând valoarea a:1:{s:13:"administrator";b:1;} prin unserialize (și apoi afișând rezultatele cu var_dump) va produce următorul rezultat:

array(1) {
    ["administrator"]=>
    bool(true)
}

Vei găsi intrări similare atât în tabelul options cât și în tabelul post_meta.

Cu toate acestea, ar trebui să eviți să scrii direct în aceste tabele. Există funcții WordPress care îți permit să stochezi și să accesezi date despre utilizatori. De exemplu, pentru a citi date din tabelul de meta ale utilizatorului, ar trebui să folosești get_user_meta, iar pentru a scrie, ar trebui să folosești funcția WordPress update_user_meta. Funcții similare există și pentru tabelele post_meta și options.

19 iun. 2013 16:36:58
0

meta_value este coloana în care se stochează valoarea unui câmp meta. Fiecare câmp meta conține o cheie și o valoare.

Cred că acest articol din Codex despre roluri și capabilități vă poate ajuta: http://codex.wordpress.org/Roles_and_Capabilities

Pentru a adăuga roluri personalizate ar trebui să folosiți funcția add_role (http://codex.wordpress.org/Function_Reference/add_role)

Și un exemplu de utilizare din Codex:

$result = add_role('basic_contributor', 'Basic Contributor', array(
    'read' => true, // Valoarea true permite această capabilitate
    'edit_posts' => true,
    'delete_posts' => false, // Folosiți false pentru a interzice explicit
));
if (null !== $result) {
    echo 'Ura!  Rol nou creat!';
} else {
    echo 'Oh... rolul basic_contributor există deja.';
}
19 iun. 2013 16:14:34
1

Cheia "wp_capabilities" din tabelul wp_usermeta identifică reprezentarea serializată a unui array care definește rolurile unui utilizator și orice capabilități adăugate acelui utilizator cu $user->add_cap('my_capability');. Mulțumiri spaul!

Echipa WordPress a denumit câmpul [prefix]_capabilities înainte să realizeze că "capabilitățile" sunt de fapt lucruri grupate pentru utilizatorii care îndeplinesc un anumit rol. Schimbarea valorii cheii de la [prefix]_capabilities la [prefix]_roles ar afecta prea multe plugin-uri terțe și ar necesita o refactorizare masivă în WordPress însuși.

Din acest motiv, este sigur să spunem că cheia wp_capabilities din usermeta stochează rolurile utilizatorilor și ar fi numită wp_roles dacă nu ar fi deja atât de multe aplicații utile care se așteaptă să folosească vechiul nume.

Deoarece acest fapt este atât de util pentru noii entuziaști WordPress, recomand ca toți cei care au ceva de spus despre Rolurile WordPress (sau capabilități) să fie foarte transparenți în legătură cu faptul că rolurile utilizatorilor sunt listate într-un array care este serializat în tabelul usermeta sub cheia [prefix]_capabilities.

16 ian. 2016 04:43:44
Comentarii

Nu este adevărat. Poți atribui cu ușurință capabilități personalizate unor utilizatori specifici apelând $user->add_cap('my_capability'); iar intrarea va arăta astfel a:2:{s:13:"administrator";b:1;s:13:"my_capability";b:1;}. Rolul de administrator precum și alți utilizatori cu drepturi de administrator pe site nu vor avea această capabilitate.

sPaul sPaul
17 ian. 2018 18:11:27
0

În tabelul wp_usermeta putem salva informațiile suplimentare legate de un utilizator atunci când creăm un utilizator nou sau actualizăm profilul unui utilizator existent.

În tabelul wp_usermeta există o coloană numită meta_key unde putem salva valoarea prin care putem obține sau actualiza valoarea acelui câmp, de exemplu:

Rolul este ca o politică de acces acordată unui utilizator, care definește nivelul de acces pe care îl are pe site. Puteți adăuga sau elimina un rol.

Capabilitățile sunt ca funcționalități adăugate sau restricții aplicate unui rol. De exemplu, există 2 roluri: 'gold-role', 'platinum-role'. Putem restricționa 'gold-role' doar la adăugarea de postări, dar nu și la publicarea lor, în timp ce pentru 'platinum-role' adăugăm funcționalitatea de a publica postări. De asemenea, putem adăuga sau elimina capabilități asociate unui rol. De asemenea, putem adăuga restricții pe metabox-urile postărilor.

Pentru mai multe informații, urmați Roluri și Capabilități

Puteți adăuga un rol și seta capabilitățile sale prin WordPress API sau puteți folosi plugin-uri pentru asta. În opinia mea, Advanced Access Manager este cel mai bun plugin pentru gestionarea Rolurilor și Capabilităților.

19 iun. 2013 16:52:40