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