我正在运行Wordpress多站点。
我希望第一个用户登录到一个新站点,以分配管理员角色,以便他们可以管理其他角色。第二个用户,以及该特定站点上的所有用户,应该只是贡献者。
当我创建一个新站点时,第一个登录该站点的用户还应该具有管理员角色,以及所有其他后续贡献者。我该怎么做?
我试着两者都用wpmu_new_user 和wpmu_activate_user 使用以下函数,该函数不起作用,当我尝试使用此函数设置时,创建的用户没有角色:
function test_onboarding_user($user_id){
$user = get_user_by( \'id\', $user_id );
if (!$user->exists()) {
return;
}
$current_user_list = get_users();
if(count($current_user_list) == 2){ // The first user is the Super Admin, so this user should be #2
$user->set_role(\'administrator\');
} else {
$user->set_role(\'contributor\');
}
}
add_action( \'wpmu_new_user\', \'test_onboarding_user\', 20, 1 );
最合适的回答,由SO网友:Jeanne Kidaw 整理而成
要设置连接的用户是否属于博客,您需要在hook上进行设置wp_login 这意味着用户已连接:
const ROLE_ADMINISTRATOR = "administrator";
const ROLE_CONTRIBUTOR = "contributor";
add_action("wp_login", function ($user_login, \\WP_User $user) {
if ( !is_multisite()
|| is_user_member_of_blog()
) {
return;
}
$usersAdministrator = get_users([
"role" => ROLE_ADMINISTRATOR,
]);
if (count($usersAdministrator) > 0) {
$newRole = ROLE_CONTRIBUTOR;
} else {
$newRole = ROLE_ADMINISTRATOR;
}
add_user_to_blog(
get_current_blog_id()
, $user->ID
, $newRole
);
}, 10, 2);