允许编辑者编辑菜单?


46

我希望能够授予我的编辑者更改菜单的权力,可以这样做吗?

外观标签似乎根本不是一个选项,我可以这样做吗?

Answers:


53

将此添加到您的主题functions.php

// add editor the privilege to edit theme

// get the the role object
$role_object = get_role( 'editor' );

// add $cap capability to this role object
$role_object->add_cap( 'edit_theme_options' );

1
get_role是一堂课吗?
轻微的绒毛,

4
@Mild Fuzz-本身不是,但它返回的实例WP_Role
TheDeadMedic 2011年

8
据我所知,您可能不应该对每个请求都执行此操作,因为这会导致数据库写入。更好admin_init而且唯一if !$role_object->has_cap('edit_theme_options')
jsphpl

此设置已保存到数据库(在表wp_options中的字段wp_user_roles中),因此最好在主题/插件激活时运行此设置。参见codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf,

或者,您可以将其添加到functions.php中,运行一次,然后将其删除
d79

18

编辑:WP 4.9的更新,并且仅隐藏编辑器的菜单项

如果您希望用户能够更改导航菜单,但不能更改外观下的其他选项,请使用:

// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );

刷新管理面板后,您可以注释掉整个代码,因为上面的代码将对数据库进行永久更改。

现在,您可以看到编辑器可见的所有选项。您可以像这样隐藏其他选项:

function hide_menu() {

    if (current_user_can('editor')) {

        remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
        remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php' ); // hide the customizer submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php&autofocus%5Bcontrol%5D=background_image' ); // hide the background submenu


        // these are theme-specific. Can have other names or simply not exist in your current theme.
        remove_submenu_page( 'themes.php', 'yiw_panel' );
        remove_submenu_page( 'themes.php', 'custom-header' );
        remove_submenu_page( 'themes.php', 'custom-background' );
    }
}

add_action('admin_head', 'hide_menu');

hide_menu()函数的最后三行是针对我的主题的主题。您可以通过在管理面板中单击要隐藏的子菜单来找到第二个参数。您的网址将类似于:example.com/wp-admin/themes.php? page= yiw_panel

因此,在此示例中,该remove_submenu_page()函数的第二个参数将是yiw_panel


1
这也为管理员隐藏了主题等。
JorgeLuisBorges

12

在WordPress 3.8中,这比当前接受的答案更好。

/**
 * @var $roleObject WP_Role
 */
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
    $roleObject->add_cap( 'edit_theme_options' );
}


3

安装插件“用户角色编辑器”-开启“ edit_theme_options”安装插件“管理”-为编辑器关闭“小部件”和“切换主题”;)


0

我发现,您的菜单将以这种方式工作:安装插件“ User Role Editor ”,在那里您也可以编辑编辑者角色的条件以及其他条件。打开edit_theme_options。但是现在:您将在“主题”,“小部件”下看到“菜单”-选项。对我来说:单击“菜单”(作为编辑器)后,我看不到填充的选项,而是空白。因此,我将停用插件“用户角色编辑器”,并正确显示“菜单”的填充选项。请注意,停用插件“用户角色编辑器”仍然是激活编辑器的条件!对我有好处,也许对您也有帮助

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.