如何允许编辑者角色更改主题设置?


22

我刚刚为一个朋友设置了一个新博客,并认为最好不要立即给他“管理员访问权限”。

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

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

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


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

Answers:


21

您可以使用您的functions.php中的角色对象和add_cap向编辑者角色添加功能

<?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'); 

只需查看功能列表以及每个功能的含义即可。


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

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

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

6

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

对我来说,我无法通过来使用它edit_theme_options。然后,我阅读了插件源,发现它实际上是manage_options。而且有效。

tl; dr:

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

为我工作(2014年)


好东西伙计...
阿巴斯

需要添加的WP下一行> 4.0$role_object->add_cap('customize');
亚历克斯


1

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


0

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

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.