问题描述

我的设置中有自定义角色,我想通过一个功能自动更改用户的角色。说用户 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' );

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。