WordPress中文开发手册

WordPress插件开发 — 角色和功能

角色和功能是两个重要功能,允许您使用WordPress扩展用户。 角色是您的用户将被调用,功能是您的用户可以看到和做的。

##什么是角色?

一个角色是让您有权力控制用户在其信息中心中看到的内容。 在WordPress中,有六个默认角色:超级管理员,管理员,编辑,作者,贡献者和订阅者。 但是可以创造更多的角色,并且可以以许多不同的方式运行。 它可以让您更好地控制用户看到的内容。 您可以在Dashboard-> Users中更改用户的角色。

devhbook-user_roles

创建新角色

除了现有的角色外,您还可以创建新的角色,并为其定义功能。 以下是创建新角色的一些代码。

function add_simple_role() {
    add_role( 'simple_role', 'Simple Role', array(
            'read' => true,
            'edit_posts' => true,
            'upload_files' => true,
            ) );
}
//Adds the simple role
add_action('init', 'add_simple_role');

你去吧! 您现在已经在WordPress中创建了第一个角色。 您的角色现在将如何改变用户的角色。

操纵能力

一个功能告诉用户角色该角色可以做什么(编辑帖子,发布帖子等)。 还可以为自定义的帖子类型(edit_your_cpt,read_your_cpt等)添加功能。

以下是一些代码来为贡献者角色添加功能。

function add_theme_caps() {
    // gets the author role
    $role = get_role( 'contributor' );
 
    // This only works, because it accesses the class instance.
    // would allow the author to edit others' posts for current theme only
    $role->add_cap( 'edit_others_posts' );
}
add_action( 'admin_init', 'add_theme_caps');

这使得贡献者角色能够使用WordPress功能来编辑他人的帖子。

还可以将自己的自定义功能添加到任何角色,无论是默认的还是自定义的。 它不会有效果,但是您可以在代码中测试。

使用功能

WordPress有两个主要功能用于检查功能,current_user_can和user_can。

current_user_can

此功能可以检查当前登录的用户的功能。 一个插件或主题开发人员将使用它来规划如何允许或限制访问管理区域,甚至前端内容。 它不需要user_id,因为它总是在当前用户上工作。 它接受一个能力,然后一些参数:

<?php current_user_can( $capability, $args ); ?>

参数可以为功能提供额外的信息。 例如,您可以测试编辑帖子的能力,但也可以传入一个post_id并测试编辑该帖子的能力。

如果用户具有适当的功能,这是一个在前端制作编辑链接的实际示例:

if ( is_user_logged_in() && current_user_can('edit_posts') ) {
  edit_post_link('Edit', '<p>', '</p>');
}

user_can

此功能允许您检查给定用户的功能。

<?php user_can( $user, $capability ); ?>

此功能比current_user_can更受限制,因为它不接受功能的参数。 除此之外,它们可以以非常相似的方式使用。

多站点

函数current_user_can_for_blog()几乎完全像current_user_can,除了它需要一个blog_id,不接受args。 它用于测试当前用户是否具有特定博客上的给定功能。

<?php current_user_can_for_blog($blog_id, $capability); ?>
Tags ,