Astăzi vom trece peste permisiunile utilizatorilor în cadrul pluginului. Mai precis, voi discuta ce ar trebui să folosiți pentru a determina cine poate vedea diferitele meniuri de administrare ale pluginului.
Am dat peste complexitatea permisiunilor utilizatorilor când lucrez la o instalare multi-site a WordPress. Am găzduit aproximativ 15-20 site-uri web și am instalat aproximativ 30 de pluginuri. Blogurile au avut fiecare utilizatori de diferite niveluri și responsabilități. Angajatorii mei ar primi solicitări sau vor găsi pluginuri cu funcționalitate pe care au vrut să le ofere și ar fi de datoria mea să le instalez și să le configurez. Atunci am intrat în probleme. De multe ori, m-am trezit modificând plugin-uri pentru a purta pur și simplu rolurile utilizatorilor pe care le folosim. Mizeria a fost cauzată, în mare parte, în parte de diferitele moduri în care WordPress vă permite să definiți cine poate vizualiza și utiliza plugin-ul dvs..
Odată, WordPress a încorporat "Nivelurile utilizatorilor". Au existat 10 nivele, fiecare conferind utilizatorilor mai multe privilegii decât ultimul. Deci, destul de des, dezvoltatorul ar viza un nivel de utilizator specific cum ar fi:
Pentru cei care nu sunteți familiarizați cu funcțiile WordPress, funcția add_menu_page este definită ca:
add_menu_page (я $ TITLU_PAGINĂ, я $ menu_title, я $ capacitate, я $ menu_slug, я $ funcție, я $ icon_url, я $ positionя);
Acest set special de cod vizează nivelul utilizatorilor 10, care ar fi cel mai înalt set de permisiuni. Deși util în anumite circumstanțe, nivelurile de utilizatori nu au dat la fel de multă flexibilitate cum mi-a plăcut. Din fericire, când a fost lansat WordPress 2.0, ni s-au dat "Roluri și capabilități". Capacitățile au înlocuit nivelurile de utilizatori și în WordPress 3.0, nivelurile utilizatorilor au devenit depreciate.
Cu noul mod de a defini permisiunile utilizatorilor, am câștigat modalități suplimentare de direcționare a utilizatorilor. Primul este de rolurile în sine. Folosind aceleași funcții ca cele de mai sus, voi ilustra direcționarea unui utilizator după rol.
În esență, acest lucru nu este prea diferit de utilizarea nivelurilor utilizatorilor, iar în situația mea nu a fost un lucru bun. Prin configurarea noastră multi-site, rolurile Administratorului au fost utilizate numai de către oamenii din casă. Cel mai mare rol pe care l-au permis oricare dintre clienți au fost editorii. Însă aveau nevoie să poată face anumite lucruri pe site-ul lor. Și, din nefericire, multe pluginuri pe care le-am folosit au folosit încă nivelurile utilizatorilor sau rolurile în sine pentru a acorda sau a refuza utilizarea pluginului. Cu toate acestea, WordPress a oferit o soluție mult mai robustă pentru această problemă în modul de capacități.
Capacitățile vă permit să direcționați un utilizator pe baza a ceea ce este capabil să facă, și nu pe rolul pe care îl dețin. Luați în considerare exemplul de mai jos.
Funcțiile acum testează dacă un utilizator poate sau nu poate upload_files. Dacă capabilitățile nu au fost modificate, acest lucru permite ca meniul să fie vizibil și să ruleze codul pentru Super Administrators, Administrators, Editors și Authors. Aceasta este o soluție mult mai bună, deoarece capacitățile individuale pot fi adăugate sau eliminate din rolurile din funcțiile tematice.
Acum, în timp ce aceasta este cea mai bună soluție pentru multe circumstanțe, îmi place să merg cu un pas mai departe. Când dezvolt un plugin pentru funcții non-administrative, cum ar fi un plugin de galerie sau mărturie, prefer să acord accesul utilizatorilor pe baza unei capabilități personalizate create pentru plugin. Am dat un exemplu despre cum să procedăm mai jos.
După cum puteți vedea, adăugăm o funcție numită "my_plugin_cap" la rolul editorului. Apoi adăugăm o pagină de meniu care este vizibilă tuturor utilizatorilor cu această capacitate. Ce este frumos este faptul că în plugin, puteți adăuga capacitatea la utilizatorii potriviți și, dacă administratorul dorește să dea alte roluri accesul, el poate face acest lucru prin adăugarea capacității însuși prin intermediul funcțiilor tematice. În cazul meu, asta înseamnă că nu mai trebuie să editez pluginurile în sine și mă simt liber să le actualizez fără să fiu îngrijorat de pierderea schimbărilor pe care le-am făcut.
Sper că acest sfat a fost util pentru dvs. Anunță-mă dacă aveți întrebări sau nelămuriri în comentariile de mai jos. Programarea plăcută a pluginurilor!