WordPress - Wetenswaardigheden

WordPress - Admin Menu Items Verwijderen

Om ervoor te zorgen dat bepaalde menu-items in het beheerderspaneel niet zichtbaar en dus toegankelijk zijn voor alle gebruikers, behalve onszelf, zouden we die kunnen uitschakelen door die gebruiker een bepaalde gebruikersrol toe te kennen.

In de praktijk komt het voor dat we een gebruiker de beheerdersrol willen toekennen met de beperking tot het wijzigen van het thema of het beheer van plugins. Het kan ook voorkomen dat een gebruiker wel toegang moet kunnen hebben tot het aanpassen van Widgets of Menu’s, dan dienen ze ook minimaal de beheerdersrol te krijgen. Echter, willen we niet dat zij thema-instellingen kunnen wijzigen of bijvoorbeeld plugin’s gaan toevoegen of verwijderen.

Die menu-opties zouden we dan uit moeten schakelen. Daar kunnen we dan een plugin voor gebruiken. Via WordPress.org zijn er diverse voor te verkrijgen. We zijn voorstander van het gebruik van zo min mogelijk plugins en gebruiken daar dan een “code snippet” voor.

Code Snippet

Een code-snippet is een klein stukje code wat we aan het functions.php bestand van het thema toevoegen om extra functionaliteit toe te voegen. Om overschrijvingen bij een update van het thema te voorkomen dient dat altijd te gebeuren in een Child-Thema.

Het gebruik en toevoegen van code-snippets hebben we in dit artikel beschreven: WordPress Code Snippets.

Menu Items Verbergen voor specifieke gebruikers

Met de volgende code kunnen we de plugin en thema gerelateerde menu-opties uitschakelen voor een bepaalde gebruiker:

/* Verwijder menu items voor gebruiker met ID */
function qwain_remove_menu_items() {
    $userid = get_current_user_id();
    if ( ($userid == 2) ) {
    remove_menu_page( 'plugins.php');
    remove_submenu_page( 'themes.php','theme-editor.php' );
    remove_submenu_page( 'themes.php','themes.php' );
    }
}
add_action( 'admin_menu', 'qwain_remove_menu_items', 999 );

Als eerste dienen we op te geven welke gebruiker (via gebruikers-ID) wel alles mag. Die ID kun je achterhalen door in het gebruikersoverzicht met je muis over de gebruiker te gaan en zie je de ID onderin je browser verschijnen. Dat nummer plaats je dan op de regel “$userid == xx” waarbij xx dan het nummer van de ID is.

Zie eventueel dit artikel voor meer uitleg over ID’s in WordPress: “WordPress ID Nummers”.

Via de regel “remove_menu_page” wordt een hoofdmenu-item uitgeschakeld (niet meer getoond) en via “remove_submenu_page” een sub-menu-item.

In dit voorbeeld is het volgende uitgeschakeld:

  • het plugin beheer via de regel “remove_menu_page( ‘plugins.php’);”
  • het thema beheer via de regel “remove_submenu_page( ‘themes.php’,’themes.php’ );”
  • de WordPress thema editor (onder “Weergave -> Editor”) via de regel “remove_submenu_page( ‘themes.php’,’theme-editor.php’ );”

Hoofdmenu Items Vinden

WordPress Admin Menu Item verwijderen

Hoofdmenu bestand

Hoofmenu-items vindt je door in het beheerderspaneel over het betreffende menu-item te hoveren, waardoor dan onderin je browser de bestandsnaam van dat menu getoond wordt.

Willen we dus het gehele plugin-menu uitschakelen dan gaan we met de muis op het menu “Plugins” (zonder te klikken) en zien onderin de browser de bestandsnaam van dat menu verschijnen “plugins.php”.

Daar het een volledige hoofdmenu-item is voegen we dan de regel: remove_menu_page( ‘plugins.php’); toe aan voorgaande snippet en het gehele plugin-menu is dan uitgeschakeld (beter gezegd niet meer zichtbaar en daardoor niet meer toegankelijk).

Op eenzelfde manier zouden we de menu-optie “Weergave” kunnen verwijderen waardoor de gebruiker geen toegang meer heeft tot alle submenu’s onder “Weergave”.

Willen we de gebruiker echter wel toegang geven tot het wijzigen van bijvoorbeeld “Widgets” en/of “Menu’s”, en niet tot de thema-editor en de thema-weergave, dan dienen we alleen die submenu’s uit te vinken.

Submenu Items Verwijderen

Willen we bijvoorbeeld items verwijderen uit het submenu “Weergave” om de toegang tot de thema’s te krijgen en de thema-editor uit te schakelen, dan dienen we die menu-items te vinden.

Alle submenu-items onder het hoofdmenu “Weergave” bevinden zich in het thema-bestand “themes.php”. Willen we nu dus de thema-editor van WordPress uitschakelen, zodat de gebruiker geen toegang meer heeft tot het bewerken van thema-bestanden zoeken we eerst het betreffende submenu-bestand op:

Submenu "Theme Editor"

Submenu “Theme Editor”

De thema-editor heeft dus de naam “theme-editor.php”. Deze schakelen we dan uit door de regel:

remove_submenu_page( ‘themes.php’,’theme-editor.php’ );

toe te voegen.

Willen we dus ook de weergave van thema’s uitschakelen dan gebruiken we de regel:

remove_submenu_page( ‘themes.php’,’themes.php’ );

Nu is (afhankelijk van je thema) alleen nog het submenu “Widgets” en “Menu’s” beschikbaar.

Plugin Hoofdmenu Items

Een plugin kan ook een hoofdmenu-item aanmaken en daarmee de plugin-afhankelijke instellingen beschikbaar stellen.

Die items worden in tegenstelling tot de standaard WordPress hoofdmenu-items niet als php-bestand in het menu weergeven, maar als een “pagina”.

Plugin Hoofdmenu Item

Plugin Hoofdmenu Item

Willen we bijvoorbeeld “WPBakery” uit het hoofdmenu laten verdwijnen dan moeten we uitvinden hoe de menu-pagina van WPBakery genoemd is. Dat doe je op dezelfde manier als bij de hoofdmenu-items van WordPress.

Door met de muis op het menu-item “WPBakery Page Builder” (ook weer niet klikken) te gaan, zie je in de browser:

“wp-admin/admin.php?page=vc-general”

verschijnen.

“vc-general” is de menu-pagina die we dan dienen uit te schakelen, door de volgende code toe te voegen:

remove_menu_page( ‘vc-general’);

Op deze manier kun je de gebruiker wel toegang geven als “Beheerder” en toch bepaalde functionaliteiten uitschakelen.

WordPress Customizer Uitschakelen

De enige uitzondering bij het uitschakelen van menu-items in het WordPress beheerderspaneel is de “Customizer”. Die laat zich niet uitschakelen door het gebruik van regels als “remove_submenu_page(…)”.

In voorgaande schermafbeeldingen was de “Customizer” al uitgeschakeld. Dat hebben we gedaan door de volgende code op te nemen in ons plugin-bestand:

/* Remove customizer link from admin panel.  */
function qwain_remove_customize_links() {
    echo '<style>.hide-if-no-customize { display: none !important; }</style>';
}
add_action( 'admin_head', 'qwain_remove_customize_links' );

Nu is ook de “Customizer” niet meer beschikbaar voor de ingelogde gebruiker(s).

Vragen & Info

Heb je vragen naar aanleiding van dit artikel, stuur ons dan een mail op: info@qwain.nl of geef een reactie via onderstaand reactie-formulier.

Op de hoogte blijven van alle WordPress Nieuwtjes, Tips & Tricks… volg ons dan op Facebook .

 

Overige Artikelen


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *