• I am setting up a wordpress site that will have several non-technical contributors and editors. I want them to have access to the dashboard but I want to get rid of many of the distracting widgets that are by default enabled. (Yes, I know they can set their own “screen options” but that’s not a great solution because — believe me — even this kind of drop-down/tick-box can be confusing for non-technical folk).

    Therefore, I have successfully modified my functions.php to remove certain widgets that come with wordpress itself, if the user is not an administrator, as per instructions here: http://codex.wordpress.org/Dashboard_Widgets_API Specifically, this sort of thing works:

    function nonadmin_customize_adminscreens() {
      	if(!current_user_can('administrator')) { // anyone not an admin
    		remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');  // incoming links
    		remove_meta_box('dashboard_plugins', 'dashboard', 'normal');   // plugins
    		remove_meta_box('dashboard_quick_press', 'dashboard', 'normal');  // quick press
    		remove_meta_box('dashboard_primary', 'dashboard', 'normal');   // wordpress blog
    		remove_meta_box('dashboard_secondary', 'dashboard', 'normal');   // other wordpress news
    	}
    }

    However, certain plugins have their own dashboard widgets that are by default enabled for all users. This means that as I install new plugins, I have to re-edit the above function to get rid of the new dashboard widgets. While doable, this is time-consuming, because I have to ferret around to find what the widget is called, test the revised function, etc.

    A better solution would be for me to throw something in functions.php that says “only enable dashboard widgets X and Y for anyone below the level of administrator”. Then it wouldn’t matter what widgets various plugins install: only I and other administrators will ever see them… which is appropriate anyway (it seems to be daft to show complex plugin widgets to non-administrators: it makes the dashboard very confusing for them).

    Can anyone point me to code that lets me do this? (I’m new to WordPress but comfortable hand-writing code). Thanks 🙂

  • The topic ‘Disabling dashboard widgets for non-admin users’ is closed to new replies.