menu

Admin Menu is what usually authenticated (logged-in) user sees in the Website dashboard on the left side. If you main administrator of your website and you want to grant access for other users to manage the content, sometimes it is very important to limit the number of menus that user can use.

AAM is a great tool that not only filters the menu for authenticated user but also completely restrict access to it. But before we jump into the practical aspect of this feature, let’s take our time and understand how WordPress menu works.

admin-menuEach menu or submenu item in WordPress Dashboard has capability assigned to it (if you are not familiar with capabilities, check this tutorial). As example, Menu Posts has capability Edit Posts, but submenu Categories has capability Manage Categories. It is very easy to find out what capability is assigned to each default WordPress menu and submenu in official tutorial Roles & Capabilities.

But when you are using custom plugin or theme, most of the time it adds its own menu to the Admin Menu panel. In this case it is quite complicated for somebody, who is not familiar with programming, find out what capability is assigned to custom menu.

We get every day at least few emails with the question “why my user does not see this or that menu?”. The answer is simple, your user does not have enough capabilities to see or use that menu. You have to either find out by yourself what capability that menu has or contact plugin’s developer and ask him/her about it. As soon as you know the answer, you can grant the proper capability to your user role or user.

For your conveniences in AAM 2.x we filter the menu list based on capabilities that your user role or user has. Try to change the Administrator Role to Author Role and you’ll see that the list of menus is much more shorter. This is because Author Role in WordPress does not have complete list of capabilities as Administrator Role.

However some custom plugins like Gravity Forms or Contact Form 7 add additional menus to Admin Menu Panel but inject capabilities dynamically and do not save them to WordPress database. In this case you have to find out what capabilities are used by custom plugin and add them manually. See this conversation.

You can restrict access to individual submenu by checking the checked checkbox next to submenu name. As you might know, WordPress, by default, redirects user to the first submenu if user click on menu item.  For example if user hit Posts menu it’ll automatically go to All Posts submenu.

If you restricted the All Posts submenu, AAM will redirect user to the first available submenu in the order these submenus are rendered. If all submenu are restricted or Restrict All checkbox is checked, then the entire menu and all submenus will be filtered and user will not have access to any of them.

Currently we do not have possibility to manage the menu order as it was in AAM 1.x versions but we will include it in our future releases.