当前位置: 首页>>建站开发>>正文


如何更改用户的角色?

webfans 建站开发 , 去评论

问题描述

我在我的设置中有自定义角色,我希望能够通过功能自动更改用户的角色。假设用户A具有SUBSCRIBER角色,如何将其更改为EDITOR?添加角色时我们只需:

add_role( $role_name , $role_display_name , array( 'read' =>  true,
                                                   'edit_posts' => false,
                                                   'delete_posts' => false, ));

改变角色怎么样?是否有类似的东西:

change_role($old_role, $new_role);

更新:我认为这个会做:

$wp_user_object = new WP_User($current_user->ID);
$wp_user_object->set_role('editor');

最佳解决办法

请参阅WP_User class,您可以使用它来为用户添加和删除角色。

编辑:我最初应该提供更多有关此答案的信息,所以我在下面添加更多信息。

更具体地说,可以通过创建WP_user类的实例并调用add_role()remove_role()方法来设置用户的角色。

例子

将订阅者角色更改为编辑者

// NOTE: Of course change 3 to the appropriate user ID
$u = new WP_User( 3 );

// Remove role
$u->remove_role( 'subscriber' );

// Add role
$u->add_role( 'editor' );

希望这比我最初的回答更有帮助,这不一定有帮助。

次佳解决办法

请注意,有一种更简单的方法可以更改用户角色,这在您不了解用户的当前角色时尤其有用:->set_role()

例:

// Fetch the WP_User object of our user.
$u = new WP_User( 3 );

// Replace the current role with 'editor' role
$u->set_role( 'editor' );

第三种解决办法

如果您想根据条件以编程方式执行此操作,可以在t31os的答案中进行推断,您可以在函数文件中执行此类操作。

$blogusers = get_users($blogID.'&role=student');

foreach ($blogusers as $user) {

    $thisYear = date('Y-7');
    $gradYear = date(get_the_author_meta( 'graduation_year', $user->ID ).'-7');

    if($gradYear < $thisYear) {
        $u = new WP_User( $user->ID );
        // Remove role
        $u->remove_role( 'student' );

        // Add role
        $u->add_role( 'adult' );
    }
}

第四种办法

您可以通过编辑用户配置文件来更改任何用户的角色。当此选项已内置到WordPress中时,无需再添加任何代码。

user-roles,wordpress

要么

您可以使用代码将订户角色的所有当前用户更改为编辑器:

$current_user = wp_get_current_user();

// Remove role
$current_user->remove_role( 'subscriber' );

// Add role
$current_user->add_role( 'editor' );

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2012.html,转载请务必附带本地址声明。