Come limitare i menù di amministrazione WP per un certo ruolo

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

Hai un problema con il web?

Il tuo sito internet non vuole funzionare?

Vuoi rinnovarlo o sistemarlo?

Hai un’idea di integrazione ma non sai se è possibile realizzarla o meno?

    Accetto la Privacy Policy
    Autorizzo al trattamento dei miei dati personali, per ricevere le informazioni richieste attraverso questo modulo di contatto. I dati da te inseriti attraverso questo modulo verranno utilizzati solo per essere da me ricontattato.

    Recensioni

    Scrivimi una recensione

    Questo QR Code ti permette di lasciarmi una recensione in maniera facile e veloce.

    Altrimenti qui sotto ti lascio un bottone, con il quale puoi lasciare la recensione direttamente su Google My Business.

    Lascia una recensione su Google