Custom User Role

时间:2014-04-30 作者:John Zon

我知道如何添加自定义用户角色,但我如何才能做到这样,当一个具有“DJ”角色的用户来到仪表板时,他们只能看到:

用户>您的个人资料,而看不到任何其他菜单项。

1 个回复
SO网友:John Zon

好的,我已经做到了。

阅读有关角色和功能的信息:http://codex.wordpress.org/Roles_and_Capabilities

为每个角色预先分配了一组默认功能,但可以使用add\\u cap()和remove\\u cap()函数分配或删除其他功能。可以使用add\\u role()和remove\\u role()函数引入或删除新角色。

添加功能:http://codex.wordpress.org/Function_Reference/add_cap

如果要添加具有功能的新角色,只需在使用add\\u role();添加角色时添加这些功能即可;。

阅读有关添加菜单的信息:http://codex.wordpress.org/Function_Reference/add_menu_page

$capability(string)(必选)向用户显示此菜单所需的功能。

Step 1: Register an activation hook to create a new user role

register_activation_hook( __FILE__, \'plugin_newuserrole\' );

function plugin_newuserrole() { 
global $wp_roles;

$result = add_role(
    \'user_dj\',
    __( \'DJ\' ),
    array(
        \'read\'         => true,  // true allows this capability

    )
);
/* if ( null !== $result ) {
    echo \'Yay! New role created!\';
}
else {
    echo \'Oh... the user_dj role already exists.\';
} */
}

Step 2: Add a capability to the role

function plugin_caps() {
// gets the new role made earlier
$role = get_role( \'user_dj\' );

// This only works, because it accesses the class instance.
// would allow the author to edit others\' posts for current theme only
$role->add_cap( \'dj_hk_user\' ); 
}
add_action( \'admin_init\', \'plugin_caps\');

Step 3: Change capability options in menu and submenu

function add_your_menu() {
add_menu_page( \'Title\', \'Menu Label\', \'dj_hk_user\', \'plugin-slug.php\', \'\', \'dashicons-microphone\');
add_submenu_page( \'plugin-slug.php\', \'Overview\', \'Overview\', \'dj_hk_user\', \'plugin-slug.php\', \'function_of_overview\' );
add_submenu_page( \'plugin-slug.php\', \'Sample Edit Title\', \'Sample Edit Label\', \'dj_hk_user\', \'sample_slug\', \'function_of_page1\' );    
}
add_action(\'admin_menu\', \'add_your_menu\');

结束

相关推荐

为什么不调用/触发“Plugins_Load”?

我正在打电话load_plugin_textdomain 然而,一旦加载了插件,就不会发生这种情况。我确实激活了一个插件,所以这不应该触发吗?add_action(\"plugins_loaded\", \"test_override\"); function init_localization() { echo \"init_localization<br>\"; load_plugin_textdomain (&#x