Making certain Admin roles/Dashboard menu items accessible to Editors
I’m absolutely new to WordPrsss, so I apologize if my question is completely obvious.
I’ve set up several separate WordPress installations for a number of tech-averse family members, with myself as Admin and users as Editors. I know it’s easy to further restrict roles/ menu items visible to Editors, but I need to do the converse: make selected capabilities available to Editors throught the menu, for instance Appearance > Header and Settings > Privacy.
Any help on how to do this or a pointer to relevant documentation would be appreciated.
Plonk this in your theme’s functions.php file, load a page(so the code runs), then remove the code.
$_the_roles = new WP_Roles(); $_the_roles->add_cap('editor','edit_theme_options');
The editor should hopefully now be able to manage theme options..
Alternatively you can manage roles and capabilities using the members plugin.
Thanks for your suggestions.
What I’m after is something slightly more granular. I want Editors to have access to Appearance > Headers and Appearance > Background but not the rest of the Appearance sub-menu such as Appearance > Widgets, etc. I’ve looked at the relevant sections of the Codex and installed the Members plugin but I’m still unclear if this is possible. I’m sure I could enable edit_theme_options then use CSS to hide the unwanted menu items, but I’m hoping there’e a better solution.
What I specifically want to allow access to are:
Appearance > Header
Appearance > Background
Tools > Export
Settings > General
Settings > Privacy
I’m using the most recent versions of WordPress and Twenty Ten.
Hope all this makes some sense.
The permissions to do those things also grant the ability to other things to, i don’t think it would be possible to simply give the permissions then revoke parts of them. Yes sure you could hide the menu items, but it wouldn’t necessarily stop any naughty editors figuring out they have other privs and messing around with things they shouldn’t..
Export is a standalone capability though, that could be granted to a particular role, but for the others, they’d tie in with other capabilities, and i don’t believe it’s possible to create the kind of seperation you’ve described (although i do understand what you’re getting at).
The alternative, would be to take the options provided on those pages, General, Privacy, Header and Background, and write a page (or a couple) where these options can be changed. Give this custom page a custom capability (eg.
custom_manage– just a quick example, poor name i know), then give that cap to Editors. That way they can manage these options via your custom page(s) without being granted the capability to mess with anything else.
Not sure if you followed what i was getting at above, so if not, let me know and i’ll clarify further..
Thanks for all the info.
If you could elaborate a bit on the custom_manage idea that would be great.
Currently I’ve hit on an ugly hack. I’ve made my users admins (they’ve no access to root, ftp, not even webmail so potential damage should be minimal), hidden any potentially dangerous/scary Dashboard menu items with the Admin Menu Editor plugin to create an ultra-simple CMS, then hidden Plugins with a bit of code in functions.php which I found with a Google search, in order to hide access to Admin Menu Editor. It’s not pretty but it’s not as inconvenient as it sounds as the only thing I anticipate doing is the occasional update. Still, I’d like a better solution.
Did you try the capability code? (i’ve just tested it) The
edit_theme_optionscapability is sufficient for users to be able to manage the header and background. For switching theme, that’s a seperate capability. Editing theme’s, again another seperate capability, however you will still need to hide certain menu items (it doesn’t take these caps into consideration – there’s a ticket on trac to this affect to), such as “Themes”, “Menus”, and “Widgets”.
That should take care of the theme options you want available (at the editor level – it works on my test install), the options(Settings > General / Privacy) however i’d move into a plugin style page that simply emulates those two options page (it’s only a few options so it should be easy to build into a plugin), which is what i was suggesting before.
I have one small question, and that’s whether you really want to give editors access to the following settings.
WordPress address (URL)
Site address (URL)
Incorrectly setting the first can break a site, do you really want to give editors the ability to change the URL settings?
In regard to building a page to emulate these options (so it can use a custom capability), i’m going to give that a shot for you (should be easy if it works how i think it will – i have a plugin i can use as a base), but i’d still appreciate feedback regarding the address settings mentioned above.
Thanks for the further details.
Yes, the Members plugin works beautifully, stupid of me, I could enable edit_theme_options for Editors as you suggested and hide Widgets, etc.
Take your point about Settings > General. I definately don’t want them to be able to change the URLs – in an ideal world I’d like them to be able to change the Site title and especially the tagline.
If it’s only those two fields for the General page that you want editable, along with the privacy option, that should be pretty simple, i’ll just knock something together for you, and test.
Shouldn’t take long, will post a pastebin link once i’ve got something for you to test.. 🙂
EDIT: Was a little delayed(family matters), will have something for you shortly though.
Ok, give this a try..
First go plonk this in your theme’s functions.php file, fire up a page once (the home page, an admin page or whatever), then remove the code.
$_the_roles =& new WP_Roles(); $_the_roles->add_cap('editor','update_options_general'); $_the_roles->add_cap('editor','update_options_privacy'); $_the_roles->add_cap('administrator','update_options_general'); $_the_roles->add_cap('administrator','update_options_privacy');
The above code will add the two custom capabilities i’ve used in the plugin to the editor and administrator roles (admin to, else you’ll not be able to see and use the pages).
Alternatively (using the members plugin): Just add the caps shown above to the editor and administrator roles.
Then take the code from here (be sure to use the box further down the page to copy from).
And place it into a new file, just make sure you give the file a
editor_options.php(but call it something else if you like).
Upload it to your plugins folder, and activate..
Ripped most of the form element code from the original options page, the only thing differing here is the saving mechanism for the options, which is done inside the plugin. Capability will be checked when using the plugin, users without the required capability won’t see the menu and even if they could somehow get the page up will not be able to save any options.
Give it a shot and let me know how it goes.. 😉
Thanks so much for this. Worked perfectly and precisely what I needed.
I have to admit I’ve got a question about menus as well, but I’ll post that separately as per forum rules.
Anyway, thanks again.
Happy to help… 🙂
I’ll keep an eye out for the follow up topic.. 🙂
I’m looking to give Editors access to ONE plugin I have installed called s3Slider. Any idea on how to do this? I’ve started with this in a custom plugin…
// store the ‘Editor’ role
$edit_editor = get_role(‘editor’);
// add a capability
Where do I find the argument to replace ???????… or am I going at this wrong?
Any help would be appreciated.
Modify the plugin to use a capability only editors and admins have, one example would be
s3sliper.php – Line 30
add_menu_page('s3slider', 's3slider', 10, __FILE__, 's3slider_panel', $url.'../wp-content/plugins/s3slider-plugin/img/menu.gif');
Modify that to read.
add_menu_page('s3slider', 's3slider', 'moderate_comments', __FILE__, 's3slider_panel', $url.'../wp-content/plugins/s3slider-plugin/img/menu.gif');
Now editors can use the plugin… 🙂
sorry if what I write is hard to understand, but I ask your help on something related to the above messages:
in one of the sites I developed wordpres’m having the same problem. The administrative area of the site (‘wp-admin’), it is necessary that the function of the site owner is ‘editor’ but there are some pages that I added the code directly into the menus page (‘menu.php’), so I’m having problems with permissions, and I wonder whether we can change the access permissions to the level of ‘editor’ on this page or even in another without my having to add those pages in another way to change your permissions. I appreciate that it can not help myself.
- The topic ‘Making certain Admin roles/Dashboard menu items accessible to Editors’ is closed to new replies.