Snabbtips Användarbehörigheter och ditt plugin

Idag går vi över användarbehörigheter inom ramen för ditt plugin. Specifikt diskuterar jag vad du ska använda för att bestämma vem som kan se de olika administratörsmenyerna i ditt plugin.


En lösning på ett kladdigt problem

Jag snubblade över komplexiteten av användarbehörigheter när jag arbetade på en multi-site-installation av WordPress. Vi var värd omkring 15-20 webbplatser och hade cirka 30 plugins installerade. Bloggar hade var och en användare av olika nivåer och ansvarsområden. Mina arbetsgivare skulle få förfrågningar eller hitta plugins med funktionalitet de ville erbjuda och det skulle vara upp till mig att installera och konfigurera dem. Det var då jag stötte på problem. Ofta fann jag mig själv att ändra pluggar för att helt enkelt rymma användarrollerna vi använde. Rösten berodde huvudsakligen delvis på de olika sätten som WordPress låter dig definiera vem som kan visa och använda ditt plugin.

En gång i tiden införde WordPress "Användarnivåer". Det fanns 10 nivåer, var och en ger fler privilegier till användaren än den sista. Så ofta utvecklaren skulle rikta sig mot en specifik användarnivå som så:

 

För de som inte är bekanta med WordPress-funktioner definieras add_menu_page-funktionen som:

 add_menu_page (я $ PAGE_TITLE, я $ menu_title, я $ kapacitet, я $ menu_slug, я $ funktion, я $ icon_url, я $ positionя);

Den här specifika uppsättningen kod riktar in användarnivå 10, vilket skulle vara den högsta tillåtna uppsättningen. Medan det var användbart under vissa omständigheter gav användarnivåerna inte så mycket flexibilitet som jag gillade. Lyckligtvis, när WordPress 2.0 släpptes, fick vi "Roller och förmågor". Möjligheter ersatte användarnivåerna och i WordPress 3.0 har användarnivåerna blivit avskrivna.

Med det nya sättet att definiera användarbehörigheter har vi fått ytterligare sätt att rikta användare. Den första är av rollerna själv. Med hjälp av samma funktioner som ovan kommer jag att illustrera att rikta en användare efter roll.

 

I huvudsak är det inte så annorlunda än att använda användarnivåer, och i min situation var det inte bra. Med vår multi-site-inställning användes administratörsroller endast av personer i hemmet. Den högsta roll som någon av kunderna fick var redaktörer. Men de behövde fortfarande kunna göra vissa saker inom sin webbplats. Och tyvärr har många plugins jag sprang över fortfarande använt antingen användarnivåer eller rollerna själva att bevilja eller neka användning av deras plugin. Men WordPress har tillhandahållit en mycket mer robust lösning på detta problem i vägen för sina möjligheter.

Möjligheter gör att du kan rikta en användare utifrån vad de kan göra i stället för den roll de har. Tänk på exemplet nedan.

 

Funktionerna testar nu huruvida en användare kan ladda upp filen. Om funktionerna inte har ändrats tillåter detta menyn att vara synlig och koden ska köras för Super Administratörer, Administratörer, Redaktörer och Författare. Detta är en mycket bättre lösning, eftersom individuella funktioner kan läggas till eller tas bort från roller i temafunktionerna.

Nu medan det här är den bästa lösningen för många omständigheter, gillar jag att ta det ett steg längre. När jag utvecklar ett plugin för icke-administrativa funktioner, till exempel ett galleri eller testimonial-plugin, föredrar jag att ge användaråtkomst baserat på en anpassad kapacitet skapad för plugin. Jag har gett ett exempel på hur man gör det här nedan.

 

Som du kan se lägger vi till en funktion som heter "my_plugin_cap" till redaktörsrollen. Sedan lägger vi till en menysida som är synlig för alla användare med den här funktionen. Vad är trevligt är att i plugin kan du lägga till möjligheten till rätt användare, och om administratören vill ge andra roller åtkomst kan han göra det genom att lägga till möjligheten själv genom temafunktionerna. I mitt fall betyder det att jag inte längre behöver redigera pluginerna själva och jag kan gärna uppdatera dem utan att oroa mig för att förlora de förändringar jag gjorde.

Jag hoppas att detta tips var användbart för dig. Låt mig veta om du har några frågor eller oro i kommentarerna nedan. Lycklig plugin programmering!