问题描述

我想能够授予我的编辑权力来改变菜单,这可以做到吗?

外观选项卡根本看起来不是一个选项,我可以这样做吗?

最佳解决方案

添加到您的主题的 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' );

次佳解决方案

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

// 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() {

    remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
    remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets 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()功能中的最后 3 行是我主题的主题。您可以在管理面板中点击要隐藏的子菜单找到第二个参数。您的网址将如下所示:example.com/wp-admin/themes.php?page=yiw_panel

所以在这个例子中,remove_submenu_page()函数的第二个参数是 yiw_panel

第三种解决方案

在 WordPress 3.8 中,这将比现在接受的答案更好。

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

第四种方案

当我看管理菜单结构时,似乎 nav-menus.php 链接与能力 edit_theme_options 有关。您可以修改编辑器角色以包含此功能吗?这也是 give them the option to edit widgets,我不知道这是否是一个问题?所有的菜单 Ajax 的东西都受到这种功能的限制,所以只需更改管理菜单功能,编辑菜单可能会不起作用。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。