Hurtig Tips Brukertillatelser og Plugin

I dag skal vi gå over brukerrettigheter innenfor omfanget av pluginet ditt. Spesielt skal jeg diskutere hva du skal bruke for å avgjøre hvem som kan se de forskjellige administrasjonsmenyene i pluginet ditt.


En løsning på et rotete problem

Jeg snublet over kompleksiteten til brukerrettigheter når jeg jobber med en multi-site-installasjon av WordPress. Vi var vert for rundt 15-20 nettsteder og hadde ca 30 plugins installert. Blogger hver hadde brukere av ulike nivåer og ansvar. Mine arbeidsgivere ville få forespørsler eller finne plugins med funksjonalitet de ønsket å tilby, og det ville være opp til meg å installere og konfigurere dem. Det var da jeg kjørte inn i problemer. Ofte fant jeg meg selv å endre plugins for å bare imøtekomme brukerrollene vi brukte. Rotet skyldtes for det meste delvis de ulike måtene WordPress gjør det mulig å definere hvem som kan se og bruke pluginet ditt.

En gang i tiden innarbeidet WordPress "Brukernivåer". Det var 10 nivåer, hver gir flere privilegier til brukeren enn sist. Så ganske ofte vil utvikleren målrette mot et bestemt brukernivå som slik:

 

For de som ikke er kjent med WordPress-funksjoner, er add_menu_page-funksjonen definert som:

 add_menu_page (я $ TITTEL, я $ menu_title, я $ evne, я $ menu_slug, я $ funksjon, я $ icon_url, я $ positionя);

Dette bestemte settet med kode er rettet mot brukernivå 10, som vil være det høyeste tillattsettet. Selv om det var nyttig under noen omstendigheter, ga brukernivåene ikke så mye fleksibilitet som jeg likte. Heldigvis, da WordPress 2.0 ble utgitt, ble vi gitt "Roller og evner". Muligheter erstattet brukernivå og i WordPress 3.0 har brukernivåene blitt avskrevet.

Med den nye måten å definere brukerrettigheter, har vi fått flere måter å målrette mot brukere på. Den første er av rollene selv. Ved å bruke de samme funksjonene som ovenfor, illustrerer jeg målretting av en bruker etter rolle.

 

I hovedsak er dette ikke så annerledes enn å bruke brukernivåer, og i min situasjon var det ikke bra. Med vår multi-site oppsett, ble administratorroller bare brukt av folk i huset. Den høyeste rollen som noen av klientene fikk, var redaktører. Men de trengte fortsatt å kunne gjøre visse ting innenfor deres nettsted. Og dessverre har mange plugins jeg kjørte over fortsatt brukt enten brukernivå eller rollene selv til å gi eller nekte bruk av plugin. Imidlertid har WordPress gitt en mye mer robust løsning på dette problemet i veien for deres evner.

Muligheter lar deg målrette en bruker basert på hva de kan gjøre i stedet for hvilken rolle de har. Tenk på eksemplet nedenfor.

 

Funksjonene test nå om en bruker kan laste opp filene eller ikke. Hvis funksjonene ikke er endret, gjør dette at menyen kan være synlig og kode for å kjøre for Super Administratorer, Administratorer, Redaktører og Forfattere. Dette er en mye bedre løsning, da individuelle evner kan legges til eller fjernes fra roller i temafunksjonene.

Nå mens dette er den beste løsningen for mange omstendigheter, liker jeg å ta det et skritt videre. Når jeg utvikler et plugin for ikke-administrative funksjoner, for eksempel et galleri eller testimonialtillegg, foretrekker jeg å gi brukerens tilgang basert på en tilpasset mulighet som er opprettet for plugin. Jeg har gitt et eksempel på hvordan du gjør dette under.

 

Som du ser, legger vi til en funksjon kalt "my_plugin_cap" til redaktørrollen. Deretter legger vi til en menyside som er synlig for alle brukere med denne funksjonen. Hva er fint er det i plugin-modulen, kan du legge til muligheten til de riktige brukerne, og hvis administratoren ønsker å gi andre roller tilgang, kan han gjøre det ved å legge til evnen selv gjennom temafunksjonene. I mitt tilfelle betyr det at jeg ikke lenger trenger å redigere pluginene selv, og jeg kan gjerne oppdatere dem uten å bekymre deg for å miste endringene jeg laget.

Jeg håper dette tipset var nyttig for deg. Gi meg beskjed hvis du har spørsmål eller bekymringer i kommentarene nedenfor. Glad plugin programmering!