如何以编程方式为新用户设置默认角色?


10

我希望博客的新用户具有自定义角色,而不是订户。如何以编程方式设置此设置?我知道可以从后端更改它。

Answers:


13

这使插件可以在活动状态下轻松劫持默认角色。

// Hijack the option, the role will follow!
add_filter('pre_option_default_role', function($default_role){
    // You can also add conditional tags here and return whatever
    return 'subscriber'; // This is changed
    return $default_role; // This allows default
});

我使用它来确保一些需要订阅者角色的插件都能获得它,而无论管理员是否尝试更改:)

问候


8

通过该wp_insert_user()函数创建新用户时,将使用该类的set_role()方法设置该角色,User并将其设置为默认用户角色。

默认用户角色是从数据库中检索到的get_option('default_role'),可以通过“管理”仪表板进入“设置”>“常规”>“新用户默认角色”进行设置。

如果您已经注册了新角色(使用add_role(),则应该可以在其中进行选择)。

另外,为了获得更多控制权,您可以加入user_registerprofile_update动作,然后set_role有条件地对它们进行操作,或者随意选择其他方式。


1
我会将您的答案标记为正确,尽管激活插件后实际答案很简单,就像update_option('default_role','custom_role_name')一样。
jayarjo 2011年

很高兴为您提供帮助。
soulseekah

4

创建用户后,使用

$user_id = wp_create_user( $user_login, $pas1, $user_email );

创建用户对象

$user = new WP_User($user_id);

然后设定角色

$user->set_role('editor');

您可以使用以下任意一种替换“编辑”角色:

  • 管理员

  • 编辑

  • 作者

  • 贡献者

  • 订户


1

将其放入主题的Pluging或functions.php中

//Make 'Client' a default role

update_option('default_role','client');

2
为什么??在不知道代码的功能或工作方式的情况下将代码放置在任何地方都是没有目的的
Pieter Goosen

那不是一个好的解决方案。如果不对每个请求执行特殊操作,它将运行更新查询。
Maciej Paprocki '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.