{"id":2822,"date":"2014-07-31T21:14:58","date_gmt":"2014-07-31T21:14:58","guid":{"rendered":"http:\/\/www.deuzebranaweb.com.br\/?p=2822"},"modified":"2014-07-31T21:14:58","modified_gmt":"2014-07-31T21:14:58","slug":"customize-the-wordpress-admin-menu-based-on-user-roles","status":"publish","type":"post","link":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/2014\/07\/31\/customize-the-wordpress-admin-menu-based-on-user-roles\/","title":{"rendered":"Customize the WordPress admin menu based on user roles"},"content":{"rendered":"<p>WordPress can be a powerful content management system but if you have multiple users often some can end up with permissions that you really wish they didn\u2019t have. There are plenty of plugins that will let you customize user permissions but it\u2019s not that hard to do ourselves by removing certain links from the admin menu for those specific user roles.<\/p>\n<p>Note that this method doesn\u2019t actually remove user permissions but just the admin menu links that would get them there.<\/p>\n<p>Basic example<br \/>\nAdd the following to functions.php (or create your own plugin) to remove the \u201cTools\u201d menu from any user with a role lower than Author.<\/p>\n<p>add_action( &#8216;admin_init&#8217;, &#8216;my_remove_menu_pages&#8217; );<\/p>\n<p>function my_remove_menu_pages() {<br \/>\n\t\/\/ If the user does not have access to publish posts<br \/>\n\tif(!current_user_can(&#8216;publish_posts&#8217;)) {<br \/>\n\t\t\/\/ Remove the &#8220;Tools&#8221; menu<br \/>\n\t\tremove_menu_page(&#8216;tools.php&#8217;);<br \/>\n\t}<br \/>\n}<br \/>\nRemoving the Tools menu<\/p>\n<p>You can choose a variety of user levels rather than publish_posts for example edit_users, delete_pages, etc. View a complete list of WordPress roles and capabilities.<\/p>\n<p>The function remove_menu_page() removes a menu item based off of the menu slug you pass it. To figure out that the menu slug was named tools.php I used used Chrome\u2019s developer tools and right clicked on the Tools menu and selected Inspect element. This showed me that the tools menu was linked as <a href=\"\/tools.php\" tabindex=\"1\">Tools<\/a>.<\/p>\n<p>To save you the hassle of figuring out each menu slug I listed them below.<\/p>\n<p>Removing sub-menu items<br \/>\nadd_action( &#8216;admin_init&#8217;, &#8216;my_remove_menu_pages&#8217; );<\/p>\n<p>function my_remove_menu_pages() {<br \/>\n\t\/\/ If the user does not have access to add new users<br \/>\n\tif(!current_user_can(&#8216;add_users&#8217;)) {<br \/>\n\t\t\/\/ Remove the &#8220;Link Categories&#8221; menu under &#8220;Links&#8221;<br \/>\n\t\tremove_submenu_page( &#8216;link-manager.php&#8217;, &#8216;edit-tags.php?taxonomy=link_category&#8217; );<br \/>\n\t}<br \/>\n}<br \/>\nRemoving the Tools menu<\/p>\n<p>The function remove_submenu_page() is similar but takes two arguments, the parent menu\u2019s slug and the sub-menu\u2019s slug. Once again you can find the slugs by inspecting each menu link or view the complete list below.<\/p>\n<p>Mixed example<br \/>\nadd_action( &#8216;admin_init&#8217;, &#8216;my_remove_menu_pages&#8217; );<\/p>\n<p>function my_remove_menu_pages() {<br \/>\n\tif(!current_user_can(&#8216;add_users&#8217;)) {<br \/>\n\t\tremove_menu_page(&#8216;options-general.php&#8217;); \/\/ Settings<br \/>\n\t\tremove_menu_page(&#8216;tools.php&#8217;); \/\/ Tools<br \/>\n\t\tremove_menu_page(&#8216;upload.php&#8217;); \/\/ Media<\/p>\n<p>\t\tremove_submenu_page( &#8216;edit.php&#8217;, &#8216;edit-tags.php?taxonomy=category&#8217; ); \/\/ Post categories<br \/>\n\t\tremove_submenu_page( &#8216;edit.php&#8217;, &#8216;edit-tags.php?taxonomy=post_tag&#8217; ); \/\/ Post tags<br \/>\n\t}<br \/>\n}<\/p>\n<p>WordPress admin menu slugs<br \/>\nDashboard\tremove_menu_page(\u2018index.php\u2019);<br \/>\nDashboard\tremove_submenu_page( \u2018index.php\u2019, \u2018index.php\u2019 );<br \/>\nUpdates\tremove_submenu_page( \u2018index.php\u2019, \u2018update-core.php\u2019 );<br \/>\nPosts\tremove_menu_page(\u2018edit.php\u2019);<br \/>\nPosts\tremove_submenu_page( \u2018edit.php\u2019, \u2018edit.php\u2019 );<br \/>\nAdd New\tremove_submenu_page( \u2018edit.php\u2019, \u2018post-new.php\u2019 );<br \/>\nCategories\tremove_submenu_page( \u2018edit.php\u2019, \u2018edit-tags.php?taxonomy=category\u2019 );<br \/>\nPost Tags\tremove_submenu_page( \u2018edit.php\u2019, \u2018edit-tags.php?taxonomy=post_tag\u2019 );<br \/>\nMedia\tremove_menu_page(\u2018upload.php\u2019);<br \/>\nLibrary\tremove_submenu_page( \u2018upload.php\u2019, \u2018upload.php\u2019 );<br \/>\nAdd New\tremove_submenu_page( \u2018upload.php\u2019, \u2018media-new.php\u2019 );<br \/>\nLinks\tremove_menu_page(\u2018link-manager.php\u2019);<br \/>\nLinks\tremove_submenu_page( \u2018link-manager.php\u2019, \u2018link-manager.php\u2019 );<br \/>\nAdd New\tremove_submenu_page( \u2018link-manager.php\u2019, \u2018link-add.php\u2019 );<br \/>\nLink Categories\tremove_submenu_page( \u2018link-manager.php\u2019, \u2018edit-tags.php?taxonomy=link_category\u2019 );<br \/>\nPages\tremove_menu_page(\u2018edit.php?post_type=page\u2019);<br \/>\nPages\tremove_submenu_page( \u2018edit.php?post_type=page\u2019, \u2018edit.php?post_type=page\u2019 );<br \/>\nAdd New\tremove_submenu_page( \u2018edit.php?post_type=page\u2019, \u2018post-new.php?post_type=page\u2019 );<br \/>\nComments\tremove_menu_page(\u2018edit-comments.php\u2019);<br \/>\nAppearance\tremove_menu_page(\u2018themes.php\u2019);<br \/>\nThemes\tremove_submenu_page( \u2018themes.php\u2019, \u2018themes.php\u2019 );<br \/>\nWidgets\tremove_submenu_page( \u2018themes.php\u2019, \u2018widgets.php\u2019 );<br \/>\nMenus\tremove_submenu_page( \u2018themes.php\u2019, \u2018nav-menus.php\u2019 );<br \/>\nEditor\tremove_submenu_page( \u2018themes.php\u2019, \u2018theme-editor.php\u2019 );<br \/>\nPlugins\tremove_menu_page(\u2018plugins.php\u2019);<br \/>\nPlugins\tremove_submenu_page( \u2018plugins.php\u2019, \u2018plugins.php\u2019 );<br \/>\nAdd New\tremove_submenu_page( \u2018plugins.php\u2019, \u2018plugin-install.php\u2019 );<br \/>\nEditor\tremove_submenu_page( \u2018plugins.php\u2019, \u2018plugin-editor.php\u2019 );<br \/>\nUsers\tremove_menu_page(\u2018users.php\u2019);<br \/>\nUsers\tremove_submenu_page( \u2018users.php\u2019, \u2018users.php\u2019 );<br \/>\nAdd New\tremove_submenu_page( \u2018users.php\u2019, \u2018user-new.php\u2019 );<br \/>\nYour Profile\tremove_submenu_page( \u2018users.php\u2019, \u2018profile.php\u2019 );<br \/>\nTools\tremove_menu_page(\u2018tools.php\u2019);<br \/>\nTools\tremove_submenu_page( \u2018tools.php\u2019, \u2018tools.php\u2019 );<br \/>\nImport\tremove_submenu_page( \u2018tools.php\u2019, \u2018import.php\u2019 );<br \/>\nExport\tremove_submenu_page( \u2018tools.php\u2019, \u2018export.php\u2019 );<br \/>\nSettings\tremove_menu_page(\u2018options-general.php\u2019);<br \/>\nGeneral\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-general.php\u2019 );<br \/>\nWriting\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-writing.php\u2019 );<br \/>\nReading\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-reading.php\u2019 );<br \/>\nDiscussion\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-discussion.php\u2019 );<br \/>\nMedia\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-media.php\u2019 );<br \/>\nPrivacy\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-privacy.php\u2019 );<br \/>\nPermalinks\tremove_submenu_page( \u2018options-general.php\u2019, \u2018options-permalink.php\u2019 );<\/p>\n<p>http:\/\/sethstevenson.net\/customize-the-wordpress-admin-menu-based-on-user-roles\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress can be a powerful content management system but if you have multiple users often some can end up with permissions that you really wish they didn\u2019t have. There are plenty of plugins that will let you customize user permissions but it\u2019s not that hard&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-2822","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=2822"}],"version-history":[{"count":0,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2822\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=2822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=2822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=2822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}