Rolul și capabilitățile WordPress Funcții ale notei

Acesta este un tutorial în patru părți care acoperă tema utilizatorilor, rolurilor și capabilităților WordPress. Seria va acoperi arhitectura și designul rolurilor utilizatorilor în WordPress; evidențiați cele mai importante funcții pentru interacțiunea cu utilizatorii și gestionarea rolurilor și a capacităților; și în ultimul tutorial, vom construi un exemplu din viața reală care demonstrează utilitatea acestui API.


Introducere

În prima parte, am abordat doar teoria despre utilizatori, roluri și capabilități. Această parte se va concentra asupra codului și a funcțiilor pe care WordPress le oferă pentru a interacționa cu acest sistem. Evident, nu vom acoperi toate funcțiile pe care le are WordPress, dar am încercat să trec peste cele mai importante și mai folositoare.

Pe măsură ce modificările WordPress și actualizările sunt împinse frecvent, trebuie întotdeauna să reveniți la documentația Codex și să verificați dacă ceva sa schimbat. Voi oferi o legătură către pagina Codex pentru fiecare funcție pe care o vom acoperi aici pentru confortul dumneavoastră.


Gestionarea utilizatorilor

Utilizatorii din WordPress sunt diferiți de vizitatori. Sunt persoane care au înregistrat un cont cu un nume de utilizator unic pe site-ul dvs. Puteți activa înregistrarea noilor utilizatori pe site-ul dvs. din panoul Setări -> General, bifând caseta de validare "Membru -> Orice persoană se poate înregistra".

În această secțiune, vom acoperi câteva dintre funcțiile utile de a interacționa cu utilizatorii înregistrați în WordPress. Setarea WordPress nouă trebuie să aibă cel puțin un utilizator: cel care instalează programul WordPress. În versiunile mai vechi, acesta a fost "admin"; cu toate acestea, acum puteți alege numele de utilizator când instalați WordPress.

  1. Crearea, actualizarea și ștergerea utilizatorilor

    WordPress are o interfață vizuală pentru a crea, actualiza și șterge utilizatorii. Ar trebui să-l utilizați de cele mai multe ori. Cu toate acestea, există cazuri când doriți să faceți acest lucru cu programare: De exemplu, când importați utilizatori dintr-un alt cadru sau dacă vă construiți propriul formular de înregistrare personalizat.

    WordPress are patru funcții pentru a efectua aceste activități:

    • wp_create_user
    • wp_insert_user
    • wp_update_user
    • wp_delete_user

    La început, poate fi un pic confuz. Toate primele 3 funcții pot crea utilizatori noi și ambele "wp_insert_user" și "wp_update_user"poate actualiza utilizatorii existenți, dar există un motiv pentru asta.

    Există două moduri de a crea un nou utilizator:

    1. Prin trecerea doar a informațiilor minime necesare creării utilizatorului (nume de utilizator, parolă și e-mail). În acest caz, ar trebui să utilizați wp_create_user funcţie.
    2. Prin trecerea unei matrice a datelor utilizatorului. În acest caz, ar trebui să utilizați wp_insert_user funcţie. Acest lucru oferă posibilitatea de a seta orice date de utilizator pentru utilizatorul dvs. înainte de adăugarea acestuia.

    Pentru a actualiza un utilizator existent, ar trebui să utilizați wp_update_user. Este posibil să utilizați același lucru wp_insert_user; cu toate acestea, această funcție nu are hash parola de utilizator și, astfel, poate eșua. Prin urmare, este mai bine să utilizați funcția potrivită pentru lucrarea potrivită.

    Mai jos, subliniez un fragment de utilizare pentru fiecare funcție. Cu toate acestea, trebuie să vă referiți la Codul dacă căutați o documentație mai detaliată.

    Utilizarea wp_create_user

     add_action ('init', 'wpttuts_createuser'); funcția wpttuts_createuser () // Date utilizator $ user_name = 'new_user'; $ user_password = 'new_user_password'; $ user_email = '[email protected]'; // Creați utilizatorul $ user_id = wp_create_user ($ user_name, $ user_password, $ user_email); // Verifică dacă funcția a returnat un obiect de eroare WP dacă (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  altfel // utilizatorul a fost creat cu succes

    Utilizarea wp_insert_user

     add_action ('init', 'wpttuts_insertuser'); wpttuts_insertuser () // Pregătiți datele utilizatorului $ user_data = array ('user_login' => 'new_user', 'user_password' => 'new_user_password' user_email '=>' [email protected] ' ($ user_id); // $ user_id-> get_error_message (); alt user_id => get_error_message (); // utilizatorul a fost creat cu succes

    Utilizarea wp_update_user

     add_action ('init', 'wpttuts_updateuser'); funcția wpttuts_updateuser () // Pregătește datele utilizatorului $ user_data = array ('user_id' => 3, 'description' => 'Utilizatorul nou creat'); // actualizează descrierea utilizatorului $ user_id = wp_update_user ($ user_data); // Verifică dacă funcția a returnat un obiect de eroare WP dacă (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  altfel // utilizatorul a fost actualizat cu succes

    Utilizarea wp_delete_user

     add_action ('init', 'wpttuts_deleteuser'); funcția wpttuts_deleteuser () if (wp_delete_user (3, 1)) // Utilizatorul a fost eliminat cu succes
  2. Obținerea listei de utilizatori

    WordPress folosit pentru a oferi două funcții pentru a prelua lista de utilizatori, deci nu trebuie să interogați baza de date. Prima funcție "get_users_of_blog ()"returnează o matrice a tuturor utilizatorilor din blogul curent (sau puteți transmite un ID de blog dacă executați o instalare MultiSite). A doua funcție"get_users ()"returnează o listă de utilizatori pe baza argumentelor transmise funcției. Aceasta elimină necesitatea de a face interogări SQL personalizate în baza de date.

    Ambele funcții returnează o serie de obiecte de date utilizator. (În afară de get_users () unde puteți specifica pentru a returna numai un anumit câmp.) Obiectul utilizatorului va fi acoperit în mai multe detalii în secțiunea următoare.

    ""get_users_of_blog ()"funcția este acum depreciată, deci nu mai trebuie să o utilizați și folosiți"get_users ()"În schimb, este un exemplu de utilizare pentru"get_users ()".

     add_action ('init', 'wpttuts_getusers'); funcția wpttuts_getusers () // criterii de interogare $ args = array ('orderby' => 'url', 'order' => 'ASC'); // Obțineți utilizatorii array $ users = get_users ($ args); // Faceți buclă prin utilizatori și afișați pagina principală a lor ($ utilizatori ca $ user) echo 'user_url. ''> '. $ user-> user_url.' ';

    Argumentul funcției acceptă mai multe opțiuni. Puteți găsi lista completă a acestor opțiuni în pagina Codex de funcții.

    • blog_id Este utilă numai pentru instalările cu mai multe locații. Valoarea implicită este ID-ul blogului curent.
    • rol Limitați utilizatorii returnați la rolul specificat.
    • include O serie de ID-uri de utilizator care trebuie incluse în interogarea returnată.
    • exclude O serie de ID-uri de utilizator pentru a exclude din interogarea returnată.
  3. WP_User Clasă

    WP_User clasa permite accesarea proprietăților, capabilităților și metodelor relative pentru un anumit utilizator. Pentru a crea o nouă instanță a clasei, aveți nevoie de ID-ul de utilizator sau de numele de utilizator; iar dacă vă aflați într-o instalare multisite, veți avea nevoie și de ID-ul blogului.

    Puteți iniția clasa pentru un anumit utilizator și puteți anula conținutul clasei. Acest lucru va afișa numai proprietățile, dar este încă util dacă doriți să citiți în interiorul clasei de utilizatori.

     add_action ('init', 'wptuts_wpuserclass'); funcția wptuts_wpuserclass () $ user = nou WP_User (1); var_dump ($ user); 

    Următoarea este un rezumat al proprietăților și metodelor din WP_User clasă:

    WP_User Proprietăți

    • date (Obiect cu detaliile utilizatorului cum ar fi numele de utilizator, parola, adresa URL ...)
    • ID-ul (Întreg ID-ul utilizatorului)
    • capace (mulțime)
    • rolurile (mulțime Roluri atribuite utilizatorului)
    • cap_key (Şir)
    • allcaps (mulțime Toate capabilitățile utilizatorului)
    • filtru (Nul)

    WP_User Metode publice

    • get_role_caps () Stabilește rolurile și proprietățile allcaps.
    • add_role () Adăugați un rol la utilizator.
    • remove_role () Eliminați un rol de la utilizator.
    • set_role () Setați un rol pentru utilizator. Aceasta va elimina rolurile atribuite anterior.
    • add_cap () Adăugați capacitatea utilizatorului.
    • remove_cap () Îndepărtați capacitatea utilizatorului.
    • remove_all_caps () Eliminați toate capabilitățile utilizatorului.
    • has_cap () Verifică dacă utilizatorul are o capacitate sau un nume de rol.
  4. Metadatele utilizatorilor

    După cum sa subliniat în articolul precedent, metadatele utilizatorilor sunt date despre utilizatorul salvat în wp_usermeta masa. Este salvat ca valori cheie / pereche, iar valoarea meta poate fi orice tip de date. Perechea nu este neapărat unică. Puteți stoca mai multe perechi cu aceeași cheie.

    Adăugarea unui metadat de utilizator

    Functia add_user_meta () adaugă noi metadate de utilizator. Funcția returnează adevărat atunci când datele sunt adăugate cu succes și false dacă nu reușesc. Așa cum am menționat mai devreme, este posibil să adăugați multe meta valori cu aceeași cheie. Dacă doriți să faceți meta-chei unic, setați al patrulea argument la adevărat.

     add_action ('init', 'wptuts_addusermeta'); funcția wptuts_addusermeta () // Adăugați mai multe valori meta cu aceeași cheie meta add_user_meta (1, 'bookmarks', 'http://site1.com', false); add_user_meta (1, "marcaje", "http://site2.com", false); add_user_meta (1, "marcaje", "http://site3.com", false); 

    Recuperarea unui Meta-Date utilizator

    Functia get_user_meta () returnează valoarea meta bazată pe ID-ul utilizatorului și pe tasta meta care îi este transmisă.

     add_action ('init', 'wptuts_getusermeta'); function wptuts_getusermeta () // Returneaza marcajele utilizatorului $ bookmarks = get_user_meta (1, 'bookmarks', false); echo "
      „; foreach ($ bookmarks ca $ bookmark) echo '
    • ". $ marcaj. '
    • „; echo '
    „;

    Actualizarea unui Meta-Date de utilizator

    Functia update_user_meta () actualizează o singură valoare meta. Dacă există mai multe valori pentru aceeași cheie meta și nu a fost specificată nicio valoare meta anterioară, atunci noua valoare va suprascrie toate valorile meta anterioare.

     add_action ('init', 'wptuts_updateusermeta'); funcția wptuts_updateusermeta () // actualizează un marcaj de utilizator update_user_meta (1, 'bookmarks', 'https://site2.com', 'http://site2.com'); 

    Eliminarea unui Meta-date de utilizator

    Functia delete_user_data () elimină o singură cheie sau toate meta-cheie / perechi pentru o anumită cheie meta dată. Dacă doriți să eliminați o singură valoare, atunci ar trebui să o specificați în al treilea argument.

     add_action ('init', 'wptuts_removeusermeta'); funcția wptuts_removeusermeta () // Actualizează un marcaj de utilizator delete_user_meta (1, 'bookmarks', 'https://site2.com'); 

Gestionarea rolurilor și a capacităților

  1. Crearea și eliminarea rolurilor

    Rolele WordPress sunt extensibile. Puteți adăuga și elimina roluri. Adăugarea unui rol este destul de simplă, aveți nevoie de un nume de rol slug, un nume afișat pentru rol; și capacitățile pe care le are rolul.

     add_action ('init', 'wptuts_addrole'); funcția wptuts_addrole () add_role ('uploader', 'Uploader', array ('upload_files')); add_role ('link_manager', 'Link Manager', array ('manage_links')); 

    Dacă bifați o pagină de setări utilizator (User-> Pick Any User-> Edit), veți găsi că rolurile dvs. recent adăugate sunt disponibile. Acestea sunt afișate cu numele afișat pe care l-ați introdus.

    Este important să menționăm că crearea de roluri trebuie făcută o singură dată. Deci, dacă vă apropiați de "init", cum ar fi în codul de mai sus, re-creați rolul de fiecare dată când codul de incendiu.Acest lucru nu este un lucru bun, în practică, doriți să-l creați o singură dată.Apoți apoi să-l cârlig la plugin-ul de activare cârlig, și asigurați-vă că o eliminați atunci când plugin-ul este dezactivat.

    Eliminarea rolurilor este destul de simplă. Trebuie doar să ai numele slugului de rol.

     add_action ('init', 'wptuts_removerole'); funcția wptuts_removerole () remove_role ("uploader"); remove_role ("link_manager"); 
  2. Adăugarea de capacități la roluri

    Similar utilizatorilor, rolurile au o clasă specială: WP_Role. Cu toate acestea, inițializarea acestei clase necesită atât numele rolului, cât și capacitățile de rol; care nu este destul de util.

    WordPress oferă o altă funcție get_role () care necesită doar numele rolului și inițiază clasa pentru tine.

     add_action ('init', 'wptuts_getrole'); funcția wptuts_getrole () $ role = get_role ("editor"); var_dump ($ rol); 

    Obiectul returnat are două proprietăți și trei metode.

    WP_Role Proprietăți

    • capabilități O multitudine de capabilități pe care le are rolul.
    • Nume Numele rolului.

    WP_Role metode

    • add_cap () Adăugați capacitatea la obiectul roluri
    • has_cap () Verificați dacă rolul are capacitatea
    • remove_cap () Eliminați capacitatea de la rol
  3. Verificarea permisiunilor

    Rolurile și capacitățile sunt acolo, nu fac nimic. Ar trebui să le impuneți în plugin sau temă, verificându-le înainte de a executa codul. Trebuie să verificați întotdeauna posibilitățile în locul rolurilor. Un utilizator care are rolul de "editor" nu garantează faptul că are capabilitățile implicite pe care WordPress le atribuie acestui rol, deoarece acestea pot fi modificate de un alt plugin sau chiar de proprietarul blogului.

    WordPress are 3 funcții pentru a verifica permisiunile, care sunt interschimbabile într-o oarecare măsură.

    • current_user_can ()
    • user_can ()
    • author_can ()

    current_user_can () verifică dacă utilizatorul curent are capacitatea specificată. De asemenea, acceptă un post sau un obiect pentru a verifica meta-capabilitățile.

    user_can () funcționează în același mod, dar puteți specifica ID-ul utilizatorului. Totuși, nu verifică meta-capabilitățile. Deci este puțin lipsit dacă doriți să verificați meta-capacitatea pentru un utilizator diferit de cel actual. Pentru aceasta, puteți folosi author_can () funcția care verifică dacă un autor de post poate efectua o anumită sarcină bazată pe o capacitate și un post ID.

     // verifică dacă autorul postului din prima postare poate publica postarea dacă (author_can (1, 'publish_posts')) publish_post_function (); // publicați postul altceva echo "Nu aveți dreptul să publicați postarea"; 

Concluzie

În această parte, am încercat să acoperim cât mai multe funcții pe care WordPress le are cu putință și să explice, de asemenea, când trebuie să utilizați fiecare funcție. Acum, ar trebui să puteți crea un plugin sau o temă care să utilizeze sistemul de capabilități. În următoarea parte, vă voi arăta cum să construiți un plugin care folosește acest sistem.

Cod