为不同的用户角色显示不同的管理菜单

时间:2017-12-14 作者:neeraj

如何向不同的用户角色显示不同的管理菜单。

我必须创建新的用户主机仅限用户

我看到这是默认用户角色的默认管理菜单列表

enter image description here

我在哪里可以知道这些菜单是在哪个wordpress php文件中由代码指定的?我可以用代码覆盖菜单吗?

1 个回复
SO网友:websupporter

菜单项绑定到功能。A.good overview can be found here. 例如,如果您不具备edit_posts “Posts”菜单项不会显示。

菜单项如何绑定到功能。一般来说:如果您使用add_menu_page()add_submenu_page() 您必须分配一个功能,告诉WordPress哪些用户可以访问此页面并在菜单中看到它。

如果您想深入了解绑定到默认菜单项的功能,可以浏览源代码。

您还可以使用这个小脚本,它为您提供了当前菜单和附带功能的概述。它只应用于开发目的,当然,它可以改进,但您得到了一般的想法:

add_action( \'in_admin_footer\', function() {

    global $menu, $submenu;
    echo \'<p>Menu:</p><table class="table widefat">\';
    echo \'<tr><th>Name</th><th>Slug</th><th>Capability</th>\';
    foreach ( $menu as $key => $item ) {
        echo \'<tr><td>\' . esc_html( $item[0] ) . \'</td><td>\' . esc_html( $item[2] ) . \'</td><td><td>\' . esc_html( $item[1] ) . \'</td><td></tr>\';
    }
    echo \'</table>\';
    echo \'<p>Submenu:</p><table class="table widefat">\';
    echo \'<tr><th>Name</th><th>Slug</th><th>Capability</th>\';
    foreach ( $submenu as $index => $subsub ) {
        foreach ( $subsub as $key => $item ) {
            echo \'<tr><td>\' . esc_html( $item[0] ) . \'</td><td>\' . esc_html( $item[2] ) . \'</td><td><td>\' . esc_html( $item[1] ) . \'</td><td></tr>\';
        }

    }
    echo \'</table>\';
});
因此,如果您创建一个新的用户角色,您可以为其分配功能,并通过这些功能,您可以决定特定的用户角色是否应该看到“编辑帖子”菜单项。您可以在中找到添加用户角色和功能的详细说明WordPress Codex.

如果要删除特定菜单项,但仍要授予用户主体功能,可以使用remove_menu_page(). 因此,您需要知道要删除的菜单项的slug。此示例将从菜单中删除“插件”项:

add_action( \'admin_menu\', function(){
    remove_menu_page( \'plugins.php\' );
});

结束