创建一个仅包含一个插件的新角色

时间:2020-07-21 07:52:35

标签: php wordpress user-roles capability

我想为多站点的WordPress后端创建一个新的用户角色。我已经设法为单个页面创建用户角色。一切正常。我的目标是在用户角色中仅显示一个插件菜单。

我在单页上的当前状态:

enter image description here

我的用户角色代码:

function igv_user_role() {
    add_role(
        'custom_role',
        'EXAMPLE ROLE',
        array(
            'read'    => true,
            'level_0' => true,
            'newCap' => true,
        )
    );

    $role = get_role( 'custom_role' );
    $role->add_cap( 'newCap', false );

}

add_action( 'init', 'igv_user_role' );


//Adming Menue

function igv_add_menu() {
    add_menu_page( 'IGV', 'IGV', 'igv_gutscheinverwaltung', 'igv-menu', 'igv_dashboard', '', 99 );
    add_submenu_page( 'igv-menu', 'Import', 'Import', 'myCap'//<--Here, 'import', 'igv_import' );
    add_submenu_page( 'igv-menu', 'Ausgeben', 'Ausgeben', 'myCap'//<--Here, 'ausgeben', 'igv_ausgeben' );
    add_submenu_page( 'igv-menu', 'Entwerten', 'Entwerten', 'myCap'//<--Here, 'entwerten', 'igv_entwerten' );
    add_submenu_page( 'igv-menu', 'Alle Gutscheincodes', 'Alle Gutscheincodes', 'myCap'//<--Here, 'all_gutscheincodes', 'igv_all_gutscheincodes' );
    add_submenu_page( 'igv-menu', 'Händlerverwaltung', 'Händlerverwaltung', 'myCap'//<--Here, 'haendlerverwaltung', 'igv_haendlerverwaltung' );
    add_submenu_page( 'igv-menu', 'Händlersuche', 'Händlersuche', 'myCap'//<--Here, 'haendlersuche', 'igv_haendlersuche' );
};

add_action( 'admin_menu', 'igv_add_menu' );

问题在于,即使您以管理员身份或其他任何角色登录,用户角色也会显示插件。为什么?

也许您有任何想法,或者我只是看错了?

预先感谢

1 个答案:

答案 0 :(得分:2)

如果您想为没有该角色的每个人隐藏菜单(add_menu_pageadd_submenu_page并不基于角色提供此菜单),您可以阻止向其他任何人添加菜单。像这样修改igv_add_menu()函数:


function igv_add_menu() {
  $role_name = 'custom_role';
  $user = wp_get_current_user();
  if ( in_array( $role_name, (array) $user->roles ) ) {
    add_menu_page( 'IGV', 'IGV', 'igv_gutscheinverwaltung', 'igv-menu', 'igv_dashboard', '', 99 );
    add_submenu_page( 'igv-menu', 'Import', 'Import', 'myCap', 'import', 'igv_import' );
    add_submenu_page( 'igv-menu', 'Ausgeben', 'Ausgeben', 'myCap', 'ausgeben', 'igv_ausgeben' );
    add_submenu_page( 'igv-menu', 'Entwerten', 'Entwerten', 'myCap', 'entwerten', 'igv_entwerten' );
    add_submenu_page( 'igv-menu', 'Alle Gutscheincodes', 'Alle Gutscheincodes', 'myCap', 'all_gutscheincodes', 'igv_all_gutscheincodes' );
    add_submenu_page( 'igv-menu', 'Händlerverwaltung', 'Händlerverwaltung', 'myCap', 'haendlerverwaltung', 'igv_haendlerverwaltung' );
    add_submenu_page( 'igv-menu', 'Händlersuche', 'Händlersuche', 'myCap', 'haendlersuche', 'igv_haendlersuche' );    
  }
};

$role_name更改为您的角色名称。