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!