Vandaag gaan we gebruikersrechten bekijken in het kader van uw plug-in. Specifiek zal ik bespreken wat u zou moeten gebruiken om te bepalen wie de verschillende beheerdersmenu's van uw plug-in kan zien.
Ik struikelde over de complexiteit van gebruikersrechten bij het werken aan een multi-site installatie van WordPress. We waren gastheer van ongeveer 15-20 websites en hadden ongeveer 30 plug-ins geïnstalleerd. Blogs hadden elk gebruikers van verschillende niveaus en verantwoordelijkheden. Mijn werkgevers zouden aanvragen ontvangen of plug-ins vinden met functionaliteit die ze wilden aanbieden en het zou aan mij zijn om ze te installeren en configureren. Dat is toen ik problemen tegenkwam. Vaak merkte ik dat ik plug-ins aanpaste om eenvoudig de gebruikersrollen die we gebruikten te accommoderen. De puinhoop was grotendeels te wijten aan de verschillende manieren waarop WordPress je laat zien wie jouw plug-in kan bekijken en gebruiken.
Once upon a time, WordPress opgenomen "User Levels." Er waren 10 niveaus, die elk meer rechten toekenden aan de gebruiker dan de vorige. Dus zo vaak zou de ontwikkelaar zich op een specifiek gebruikersniveau richten zoals:
Voor diegenen die niet bekend zijn met WordPress-functies, wordt de functie add_menu_page gedefinieerd als:
add_menu_page (я $ page_title, я $ menu_title, я $ vermogen, я $ menu_slug, я $ functie, я $ icon_url, я $ positionя);
Deze specifieke code is gericht op gebruikersniveau 10, wat de hoogste machtigingenset zou zijn. Hoewel dit in sommige omstandigheden nuttig was, gaf het gebruikersniveau niet zoveel flexibiliteit als ik wilde. Gelukkig, toen WordPress 2.0 werd uitgebracht, kregen we 'Rollen en mogelijkheden'. Capabilities hebben gebruikersniveaus vervangen en in WordPress 3.0 zijn gebruikersniveaus afgeschreven.
Met de nieuwe manier om gebruikersrechten te definiëren, hebben we extra manieren gevonden om gebruikers te targeten. De eerste is door de rollen zelf. Met dezelfde functies als hierboven, illustreer ik dat ik een gebruiker per rol target.
In wezen is dit niet veel anders dan het gebruik van gebruikersniveaus, en in mijn situatie was dat geen goede zaak. Met onze multi-site setup werden de beheerdersrollen alleen gebruikt door mensen in huis. De grootste rol die de clients mochten hebben, waren redacteuren. Maar ze moesten nog steeds bepaalde dingen op hun site kunnen doen. En helaas gebruikten veel plug-ins die ik tegenkwam nog steeds gebruikersniveaus of de rollen zelf om het gebruik van hun plug-in toe te staan of te weigeren. WordPress heeft echter een veel robuustere oplossing voor dit probleem geboden in de vorm van hun mogelijkheden.
Met functies kunt u een gebruiker targeten op basis van wat ze kunnen doen in plaats van de rol die ze spelen. Bekijk het onderstaande voorbeeld.
De functies testen nu of een gebruiker upload_files kan of niet. Als de mogelijkheden niet zijn gewijzigd, kan het menu zichtbaar zijn en kan de code worden uitgevoerd voor superbeheerders, beheerders, redacteuren en auteurs. Dit is een veel betere oplossing, omdat individuele functies kunnen worden toegevoegd aan of verwijderd uit rollen in de themafuncties.
Hoewel dit voor veel omstandigheden de beste oplossing is, ga ik graag een stap verder. Wanneer ik een plug-in aan het ontwikkelen ben voor niet-administratieve functies, zoals een galerij- of testimonial-plug-in, geef ik er de voorkeur aan om gebruikers toegang te verlenen op basis van een aangepaste mogelijkheid die voor de plug-in is gemaakt. Ik heb een voorbeeld gegeven van hoe dit hieronder te doen.
Zoals u kunt zien, voegen we een mogelijkheid toe met de naam "my_plugin_cap" aan de editorrol. Vervolgens voegen we een menupagina toe die zichtbaar is voor alle gebruikers met deze mogelijkheid. Wat leuk is, is dat je in de plug-in de mogelijkheid kunt toevoegen aan de juiste gebruikers en als de beheerder andere rollen toegang wil geven, kan hij dat doen door de mogelijkheid zelf toe te voegen via de themafuncties. In mijn geval betekent dit dat ik de plug-ins niet langer zelf hoef aan te passen en ik kan ze gerust bijwerken zonder me zorgen te maken dat ik de wijzigingen die ik heb aangebracht, kwijtraak..
Ik hoop dat deze tip nuttig voor je was. Laat het me weten als je nog vragen of opmerkingen hebt in de reacties hieronder. Gelukkig plug-in programmeren!