Come limitare i menù di amministrazione WP per un certo ruolo
Come dicevo nel mio articolo precedente, non ho mai trovato un plugin di WordPress che mi permettesse un controllo granulare soprattutto dei menù presenti nel backend.
Per certi ruoli, è accessibile anche il tema per esempio, anche se non sarebbe necessario.
Qui ho salvato uno script da salvare nel file functions.php del tema o negli snippets se usate il plugin relativo che vi permette un controllo granulare della visualizzazione dei menù nel backend di WordPress per il ruolo Moderatore.
/* Limit the admin menus of Moderator */ function hide_moderator() { // Use this for specific user role. Change moderator part accordingly if (current_user_can('moderator')) { /* DASHBOARD */ // remove_menu_page( 'index.php' ); // Dashboard + submenus // remove_menu_page( 'about.php' ); // WordPress menu remove_submenu_page( 'index.php', 'update-core.php'); // Update /* WP DEFAULT MENUS */ remove_menu_page( 'edit-comments.php' ); //Comments remove_menu_page( 'plugins.php' ); //Plugins remove_menu_page( 'tools.php' ); //Tools // remove_menu_page( 'users.php' ); //Users // remove_menu_page( 'edit.php' ); //Posts // remove_menu_page( 'upload.php' ); //Media // remove_menu_page( 'edit.php?post_type=page' ); //Pages // remove_menu_page( 'themes.php' ); //Appearance remove_menu_page( 'options-general.php' ); //Settings /* SETTINGS PAGE SUBMENUS */ remove_submenu_page( 'users.php', 'users.php'); // All users remove_submenu_page( 'users.php', 'user-new.php'); // Add User /* SETTINGS PAGE SUBMENUS */ // remove_submenu_page( 'options-general.php', 'options-permalink.php'); // Permalinks // remove_submenu_page( 'options-general.php', 'options-writing.php'); // Writing // remove_submenu_page( 'options-general.php', 'options-reading.php'); // Reading // remove_submenu_page( 'options-general.php', 'options-discussion.php'); // Discussion // remove_submenu_page( 'options-general.php', 'options-media.php'); // Media remove_submenu_page( 'options-general.php', 'options-general.php'); // General // remove_submenu_page( 'options-general.php', 'options-privacy.php'); // Privacy /* APPEARANCE SUBMENUS */ remove_submenu_page( 'themes.php', 'widgets.php' ); // hide Widgets // remove_submenu_page( 'themes.php', 'nav-menus.php' ); // hide Menus remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu remove_submenu_page('themes.php', 'theme-editor.php'); // hide Theme editor remove_submenu_page('themes.php', 'site-editor.php'); // hide Theme editor beta remove_submenu_page('themes.php', 'ma_customfonts' ); // Custom Fonts /* HIDE CUSTOMIZER MENU */ $customizer_url = add_query_arg( 'return', urlencode( remove_query_arg( wp_removable_query_args(), wp_unslash( $_SERVER['REQUEST_URI'] ) ) ), 'customize.php' ); remove_submenu_page( 'themes.php', $customizer_url ); /* Plugin related submenus under Settings page */ // remove_submenu_page( 'options-general.php', 'webpc_admin_page' ); // WebP converter // remove_submenu_page( 'options-general.php', 'kadence_blocks' ); // Kadence Blocks remove_submenu_page( 'edit.php?post_type=sp_wp_carousel', 'wpcp_settings' ); // wpcp settings remove_submenu_page( 'edit.php?post_type=sp_wp_carousel', 'wpcp_help' ); // wpcp help remove_submenu_page( 'edit.php?post_type=sp_wp_carousel', 'wpcp_tools' ); // wpcp tools /* 3rd party plugin menus */ remove_menu_page( 'wpcb_menu_page_php' ); // Code snippets remove_menu_page( 'rank-math' ); // Rank Math remove_menu_page( 'gf_edit_forms' ); // Gravity Forms remove_menu_page( 'edit.php?post_type=acf-field-group' ); // ACF remove_menu_page( 'cptui_main_menu' ); // CPT UI remove_menu_page( 'ct_dashboard_page' ); // Oxygen remove_menu_page( 'maxmegamenu' ); // Max Mega Menu remove_menu_page( 'oxy_extras_menu' ); // Pxy Extra remove_menu_page( 'smush' ); // Smush remove_menu_page( 'wp-mail-smtp' ); // SMTP remove_menu_page( 'easy-wp-smtp' ); // Any Font remove_menu_page( 'duplicator' ); // Duplicator remove_menu_page( 'mlang' ); // Polylang remove_menu_page( 'ald_setting' ); // Polylang /* Remove admin notice */ remove_all_actions( 'admin_notices' ); } } add_action('admin_head', 'hide_moderator'); /* Remove top admin bar menu */ function remove_wp_admin_bar_options( $wp_admin_bar ) { if (current_user_can('moderator')) { /* il node in questione è l'id del tag li 'senza wp-admin-bar-' */ $wp_admin_bar->remove_node('menu-toggle'); $wp_admin_bar->remove_node('wp-logo'); $wp_admin_bar->remove_node('updates'); $wp_admin_bar->remove_node('new-content'); $wp_admin_bar->remove_node('rank-math'); $wp_admin_bar->remove_node('rocket-settings'); $wp_admin_bar->remove_node('docs'); $wp_admin_bar->remove_node('faq'); $wp_admin_bar->remove_node('support'); $wp_admin_bar->remove_node('customize'); } } add_action( 'admin_bar_menu', 'remove_wp_admin_bar_options', PHP_INT_MAX );
Se vuoi una mano con la personalizzazione del tuo sito in WordPress, contattami attraverso questo modulo
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!