I would like to create a new user role for the WordPress backend of a multisite. I already managed to create a user role for a single page. Everything worked. My goal is that only one plugin menu is shown in the user role.
My current status on the single page:
And my code for the user role:
function igv_user_role() {
add_role(
'custom_role',
'EXAMPLE ROLE',
array(
'read' => true,
'level_0' => true,
'newCap' => true,
)
);
$role = get_role( 'custom_role' );
$role->add_cap( 'newCap', false );
}
add_action( 'init', 'igv_user_role' );
//Adming Menue
function igv_add_menu() {
add_menu_page( 'IGV', 'IGV', 'igv_gutscheinverwaltung', 'igv-menu', 'igv_dashboard', '', 99 );
add_submenu_page( 'igv-menu', 'Import', 'Import', 'myCap'//<--Here, 'import', 'igv_import' );
add_submenu_page( 'igv-menu', 'Ausgeben', 'Ausgeben', 'myCap'//<--Here, 'ausgeben', 'igv_ausgeben' );
add_submenu_page( 'igv-menu', 'Entwerten', 'Entwerten', 'myCap'//<--Here, 'entwerten', 'igv_entwerten' );
add_submenu_page( 'igv-menu', 'Alle Gutscheincodes', 'Alle Gutscheincodes', 'myCap'//<--Here, 'all_gutscheincodes', 'igv_all_gutscheincodes' );
add_submenu_page( 'igv-menu', 'Händlerverwaltung', 'Händlerverwaltung', 'myCap'//<--Here, 'haendlerverwaltung', 'igv_haendlerverwaltung' );
add_submenu_page( 'igv-menu', 'Händlersuche', 'Händlersuche', 'myCap'//<--Here, 'haendlersuche', 'igv_haendlersuche' );
};
add_action( 'admin_menu', 'igv_add_menu' );
The problem is that the user role shows the plugin even if you are logged in as admin or any other role. Why?
Maybe you have any ideas or I'm just looking wrong?
Thanks in advance
If you want to hide the menu for everyone without this role (the
add_menu_page
oradd_submenu_page
don't provide this based on roles), you can just prevent it from being added for anyone else. Modify theigv_add_menu()
function like so:Change the
$role_name
to whatever your role is named.