Laden...

WordPress code uitvoeren op basis van rollen en rechten

Tim van Iersel 20 februari 2020
Wordpress code uitvoeren op bass van rollen en rechten

Als de gebruiker ____ is dan…

Bij het maken van plugins hebben we vaak bepaalde functies die alleen maar voor admin gebruikers zijn bedoelt. In dat geval moet je eerst controleren of de huidige gebruiker de juiste rechten heeft.

current_user_can()

Gelukkig is er voor zulke gevallen de WordPress functie current_user_can().

Heb je bepaalde code die alleen voor gebruikers bedoelt zijn die instelling pagina’s kunnen zien / wijzigen (admins)? Dan kun je deze functie gebruiken:

if( current_user_can('manage_options') ){
    // plaats hier de code die alleen voor gebruikers met deze rechten       
    // zijn bedoelt.
}

Je kunt ook de rol namen doorgeven maar deze werken niet altijd correct, current_user_can('editor') zal bijvoorbeeld bij de rol ‘editor‘ de code niet uitvoeren als iemand een hogere rol heeft zoals ‘admin‘.

Een volledig overzicht van alle rollen en bijbehorende rechten kun je vinden op de WordPress.org website.

https://wordpress.org/support/article/roles-and-capabilities/#manage_categories

Functie uitvoeren op basis van de gebruikersrol binnen WordPress

Wil je toch een functie op basis van de rol? Dan kun je het beste de volgende code gebruiken:

$user = wp_get_current_user();

if ( in_array( 'admin', (array) $user->roles ) ) {
    // De gebruiker heeft de admin rol
}

In de bovenstaande code wordt gecheckt of er in de lijst met rollen (array) van de gebruiker de specifiek benoemde rol zit. Een gebruiker kan meerdere rollen hebben.

Hulp nodig met het ontwikkelen van een functionaliteit binnen WordPress? Neem dan gerust contact ons op via de contact pagina of mail naar tim@plugin.nl.

Tim van Iersel 20 februari 2020

Tim is eigenaar van Plugin.nl en van het internet bureau Websitescanner. Sinds 2012 actief bezig met WordPress.

Reacties
    Patrick

    Super bedankt, precies wat ik vandaag nodig had in mijn project. Misschien ook wel handig om erbij te vermelden dat er ook de functie user_can() is. Die gebruikte ik eerst maar toen moest ik eerst het user ID hebben.

      Tim van Iersel

      Hallo Patrick, inderdaad ook een handige functie maar vooral voor wat ander soort usecases. In dit geval ging het puur om de ingelogde gebruiker en niet om andere gebruikers

Je kunt niet langer reageren op dit bericht.