主要内容
1.什么是角色和职能(Role and Capabilities)?
Administrator – 系统管理员 Editor – 编辑,可以发布和编辑自己及他人发布的文章 Author – 作者,可以发布和管理他们自己的文章 Contributor –投稿者,他们可以投稿,和管理他们的文章,但是不能发布。 Subscriber – 订阅者,可以阅读评论和接收newsletter这种角色和职能模式的权限控制系统比使用用户级别来控制权限更加的有弹性,易于扩展。你甚至可以添加更多的角色,而不需要修改默认的设置。 WordPress 插件API允许你添加,移除,改变系统的角色和职能。也就是说,我们可以添加角色,添加职能,重新分配职能给角色。
2.职能和后台管理菜单
几乎每一个插件都需要在管理界面添加至少一个用户配置插件的页面。因而,你需要添加自定义的管理菜单。wordpress里有一系列的方法可以帮你完成这个功能:// add top level menu
你可能已经发现,上面这些函数都有一个必须的参数capability。这意味着登录到后台的用户需要有相应的职能才能够看到这里添加的菜单选项。 如果你的主题或者插件有一个选项页,合理的 控制对该页的访问时非常重要的。例如,如果有一个主题选项页,你需要使用edit_themes这个职能(capability),如果是一个插件选项页,就需要使用edit_plugins职能。另一种方法是为插件和主题选项也使用manage_options这个职能.
add_menu_page(page_title, menu_title, capability, handle, [function], [icon_url]);
// add sub-menu pages
add_submenu_page(parent, page_title, menu_title, capability, file/handle, [function]);
// add Options sub-menu
add_options_page(page_title, menu_title, capability, handle, [function]);
// add Management sub-menu
add_management_page(page_title, menu_title, capability, handle, [function]);
// add Pages sub-menu
add_pages_page( page_title, menu_title, capability, handle, [function]);
// add Posts sub-menu
add_posts_page( page_title, menu_title, capability, handle, [function]);
// add Appearances sub-menu
add_theme_page( page_title, menu_title, capability, handle, [function]);
3.检查一个用户的职能
current_user_can()函数。
if ( current_user_can( $capability ) ) {
// do something if the current user has $capability
}
// check whether the current can edit a post with the ID $post_id
current_user_can( 'edit_post', $post_id );
if ( author_can( $post, $capability ) ) {
// do something if the author of the post $post has $capability
}
4.添加自定义用户角色
add_role( $role_name, $display_name, $capabilities );// for example:add_role( 'document_uploader', 'Document Uploader', array( 'organize_document' ) );
if ( current_user_can( 'organize_gallery' ) ) {
被分配了这个角色的用户职能organize_document,但是不能edit_posts或者publish_posts. 如果你想要移除一个角色,可以使用 remove_role( ):
// do something
}
remove_role( 'photo_uploader' );
当插件使用者决定卸载你的插件时,你需要给插件使用者提供一个选项来移除这个自定义的角色。 但是,如果你想要给已经存在的用户添加职能应该怎么办?
5.添加自定义用户职能
// get the "author" role object
$role = get_role( 'author' );// add "organize_gallery" to this role object
$role->add_cap( 'organize_document');