我刚刚为一个朋友设置了一个新Blog,并认为最好不要立即为他提供Administrator Access。

因此,我创建了一个新用户作为Editor。

但后来我看到该用户无法更改主题设置,例如背景和标题。

是否有一种简单的方法允许编辑者角色编辑“二十一”或“二十一岁的孩子”中的任何主题设置。它?他基本上应该能够执行管理员可以执行的所有操作。主题,甚至可能更改主题。

评论

提醒我……我为此编写了一个插件:编辑器的主题选项

#1 楼

您可以使用角色对象添加功能到编辑者角色,并从您的functions.php中添加add_cap。php

<?php
   // get the the role object
   $editor = get_role('editor');
   // add $cap capability to this role object
   $editor->add_cap('edit_theme_options');
?>


您还可以删除功能:

$editor->remove_cap('delete_posts'); 


只看一下功能列表以及每个功能的含义。

评论


太好了,确实有效!对于矮子:get_role('editor')-> add_cap('edit_theme_options'); :)

– hakre
2011-3-25在0:55

@hakre FYI像a()-> b()这样的直接变量分配在5之前的PHP版本中不起作用。

–hitautodestruct
13年4月10日在8:40



由于角色通常存储在数据库中,因此更新角色应在插件中以及激活/停用钩子内进行。不必在每个WordPress进程上运行此代码。

–大卫
16年3月14日在8:35

#2 楼

由于这是该问题在Google上的第一个热门产品,我觉得这是进行更新的正确位置:

对我来说,我无法通过edit_theme_options使其正常工作。然后,我阅读了插件源,发现它实际上是manage_options。并且有效。

tl; dr:

$role_object = get_role( 'editor' );
$role_object->add_cap( 'manage_options' );


对我有用(2014年)

评论


好东西家伙...

–阿巴斯
2015年12月30日下午5:59

对于WP> 4.0,需要再添加一行。$ role_object-> add_cap('customize');

– Alex
17 Mar 6 '17 at 3:33



#3 楼

他们不需要“ edit_themes”功能吗?您可以使用Justin Tadlocks插件http://wordpress.org/extend/plugins/members/编辑与每个角色相关的功能。

#4 楼

另一个很棒的插件是用户角色编辑器(http://wordpress.org/extend/plugins/user-role-editor/)。它与会员相似,但是更加基本和易于使用。另外,如果需要的话,开发人员总是在听取反馈并提供帮助。

#5 楼

这是旧的,但是这是更新的方法,可以实现此目的:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );